Vault PKI Kubernetes the hard way v2 Root CA
Материал из noname.com.ua
Версия от 09:54, 3 октября 2022; Sirmax (обсуждение | вклад) (→Создание СА для работы кластера etcd)
Создание Корневого СА (Root CA)
Эта страница - часть большой статьи про CA используемые в k8s: Vault_PKI_Kubernetes_the_hard_way_v2
Включить PKI для корневого сертификата
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
TYPE="exported"
#TYPE="internal"
vault write -format=json pki_root_ca/root/generate/${TYPE} \
common_name="Root Certificate Authority for Home Network" \
country="Ukraine" \
locality="Kharkov" \
street_address="Lui Pastera St. 322, app. 131" \
postal_code="61172" \
organization="Home Network" \
ou="IT" \
ttl="262800h" > 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 pki-root-ca.json | jq -r .data.certificate > rootCA.pem
cat pki-root-ca.json | jq -r .data.issuing_ca > rootCA_issuing_ca.pem
cat pki-root-ca.json | jq -r .data.private_key > rootCA_private_key.pem
Просмотр в привычном формате
openssl x509 -in rootCA.pem -text -noout
На что тут обратить внимание:
- Время жизни - 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