Vault PKI Kubernetes the hard way v2 Root CA
Материал из noname.com.ua
Версия от 10:09, 3 октября 2022; Sirmax (обсуждение | вклад) (→Подготовка файлов с сертефикатом и ключем)
Создание Корневого СА (Root CA)
Эта страница - часть большой статьи про CA используемые в k8s: Vault_PKI_Kubernetes_the_hard_way_v2
Включить PKI для корневого сертификата
По сути тут создается путь (endpoint!) который реализует функционал PKI - как бы говорим Vault-у что бы по определенному пути работал определенным образом
В целом значение path может быть любым, но удобно давать осознанные имена
vault \ secrets \ enable \ -path=k8s_pki_root_ca \ -description="PKI k8s Root CA" \ -max-lease-ttl="262800h" \ pki
Success! Enabled the pki secrets engine at: k8s_pki_root_ca/
Проверить созданный endpoint
vault secrets list | grep k8s_pki
k8s_pki_root_ca/ pki pki_8b6cae1e PKI k8s Root CA
Создание корневого сертефиката (CA)
Конфигурация Vault
- ВАЖНО: Тип определяет будет ли показан ключ от сертификата. В случае internal ключ показа не будет и сертификат можно будет использовать только в Vault
- Эта команда вызывает генерацию самоподписаного сертификата, который будет использоваться в качестве корневого
- тут не указываются ограничения налагаемые на сертификат - но Vault сам "знает" что нужно сделать - из пути root/generate/
TYPE="exported" #TYPE="internal" vault \ write \ -format=json k8s_pki_root_ca/root/generate/${TYPE} \ common_name="Root Certificate Authority for Home Network v2" \ country="Ukraine" \ locality="Kharkov" \ street_address="Lui Pastera St. 322, app. 131" \ postal_code="61172" \ organization="Home Network" \ ou="IT" \ ttl="262800h" > k8s_pki_root_ca.json
- ttl="262800h" - 30 лет
- В теории возможно использовать пре-созданный CA или даже цепочку - смотреть тут: https://groups.google.com/g/vault-tool/c/y4IcgiLBG4c
Просмотр результата
Результат работы команды (длинный вывод пропущен):
cat pki-root-ca.json { "request_id": "a73f7190-acff-a3da-4a73-32c41546984c", "lease_id": "", "lease_duration": 0, "renewable": false, "data": { "certificate": "-----BEGIN CERTIFICATE-----\nMIIEdT29yaz ... "expiration": 2610802620, "issuing_ca": "-----BEGIN CERTIFICATE-----\nMIIEd29yazE ... "private_key": "-----BEGIN RSA PRIVATE KEY-----\nMIIEpc ... "private_key_type": "rsa", "serial_number": "6c:90:eb:90:d4:5f:86:6d:d8:fb:f8:f8:a0:4d:07:f8:99:1e:62:02" }, "warnings": null }
Корневой сертефикат самоподписаный. Поля certificate и issuing_ca полностью совпадают.
Подготовка файлов с сертефикатом и ключем
cat k8s_pki_root_ca.json | jq -r .data.certificate > k8s_root_certificate.pem
cat k8s_pki_root_ca.json | jq -r .data.issuing_ca > k8s_root_issuing_ca.pem
cat k8s_pki_root_ca.json | jq -r .data.private_key > k8s_root_private_key.key
Просмотр в привычном формате
openssl x509 -text -noout -in k8s_root_certificate.pem
На что тут обратить внимание:
- Время жизни - 30 лет (должно хватить)
Validity Not Before: Oct 2 14:56:32 2022 GMT Not After : Sep 24 14:57:00 2052 GMT
- Информация об "Удостоверяющем центре" - верная
Subject: C = Ukraine, L = Kharkov, street = app. 131 + street = Lui Pastera St. 322, postalCode = 61172, O = Home Network, OU = IT, CN = Root Certificate Authority for Home Network v2
- Назначение сертефиката - CA, это видно из полей
- X509v3 Key Usage: critical Certificate Sign, CRL Sign
- X509v3 Basic Constraints: critical CA:TRUE
X509v3 extensions: X509v3 Key Usage: critical Certificate Sign, CRL Sign X509v3 Basic Constraints: critical CA:TRUE X509v3 Subject Key Identifier: 02:F8:85:2B:75:F8:E1:1C:69:28:30:32:21:2D:86:71:AF:AB:EC:3C X509v3 Authority Key Identifier: keyid:02:F8:85:2B:75:F8:E1:1C:69:28:30:32:21:2D:86:71:AF:AB:EC:3C
URL для корневого CA
Публикуем URL’ы для корневого центра сертификации
vault \ write \ k8s_pki_root_ca/config/urls \ issuing_certificates="http://vault.home:8200/v1/k8s_pki_root_ca/ca" \ crl_distribution_points="http://vault.home:8200/v1/k8s_pki_root_ca/crl"
Success! Data written to: k8s_pki_root_ca/config/urls