Сертификат CA не имеет расширения basicConstraints как истинного - PullRequest
0 голосов
/ 18 мая 2018

Я следую этому РУКОВОДСТВУ AWS по созданию самозаверяющих сертификатов.Но после создания моего ЦС я пытаюсь загрузить его в AWS IOT и получаю следующую ошибку:

Команда:

aws iot register-ca-certificate --ca-certificate file://CA_cert.pem --verification-cert file://verificationCert.crt

Ошибка:

An error occurred (CertificateValidationException) when calling the RegisterCACertificate operation: CA certificate is not valid. The CA certificate does not have the basicConstraints extension as true

Любая помощь приветствуется!

1 Ответ

0 голосов
/ 04 июня 2018

Я также использовал AWS IoT и столкнулся с той же ошибкой, и нашел решение.

Причина ошибки

Ошибка возникает из-за расширения basicConstraints в сертификате CA, что означает, что сертификат является CA, поэтому этот сертификат может подписывать другиеоткрытые ключи для генерации клиентских сертификатов, не установлен на TRUE.

Обратите внимание, что сертификат клиента X содержит открытый ключ X, подписанный секретным ключом CA.Другие клиенты, например Y, могут проверить открытый ключ X, используя открытый ключ CA.

Я думаю, что у вас возникла ошибка при попытке создать сертификат CA.Сообщение об ошибке указывает, что сертификат CA не может подписывать открытые ключи других клиентов.

Ниже описано, как я это сделал.

Решение

Я предполагаю, что вы уже сгенерировали ключ CA, rootCA.key.

Нам нужен openssl файл конфигурации, скажем rootCA_openssl.conf.Обратите внимание, что вы можете изменить значения.

[ req ]
distinguished_name       = req_distinguished_name
extensions               = v3_ca
req_extensions           = v3_ca

[ v3_ca ]
basicConstraints         = CA:TRUE

[ req_distinguished_name ]
countryName              = Country Name (2 letter code)
countryName_default      = KR
countryName_min          = 2
countryName_max          = 2
organizationName         = Organization Name (eg, company)
organizationName_default = Deeply Inc.

Затем сгенерируйте сертификат CA, используя файл конфигурации, rootCA_openssl.conf.

openssl req -new -sha256 -key rootCA.key -nodes -out rootCA.csr -config rootCA_openssl.conf
openssl x509 -req -days 3650 -extfile rootCA_openssl.conf -extensions v3_ca -in rootCA.csr -signkey rootCA.key -out rootCA.pem 

Теперь у нас есть сертификат CA, rootCA.pem.Затем вы можете следовать инструкциям в документации AWS IoT.Например:

# Get the registration code for the use below: 
# $ aws iot get-registration-code 

openssl genrsa -out verificationCert.key 2048

openssl req -new -key verificationCert.key -out verificationCert.csr
# Put the registration code in Common Name field

openssl x509 -req -in verificationCert.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out verificationCert.crt -days 500 -sha256
...