Как создать собственную цепочку сертификатов?
Я хотел бы настроить свой собственный ответчик OCSP для целей тестирования, и для этого мне необходимо иметь корневой сертификат с несколькими сертификатами, сгенерированными на его основе.
Мне удалось создать самозаверяющий сертификат с помощью openssl
, и я хочу использовать его в качестве корневого сертификата. Следующим шагом будет создание производных сертификатов, однако я, похоже, не могу найти документацию о том, как это сделать. Кто-нибудь знает, где я могу это найти информация?
-
Редактировать:
Оглядываясь назад, я понимаю, что на мой вопрос еще нет полного ответа, и чтобы прояснить проблему, я представлю свою цепочку сертификатов следующим образом: Root > A > B> C > ...
В настоящее время я могу создать корневой сертификат и сертификат A с помощью приведенного ниже, но я не нашел, как создать более длинную цепочку:
# Root certificate is created like this:
openssl req -new -newkey rsa:1024 -nodes -out ca.csr -keyout ca.key
openssl x509 -trustout -signkey ca.key -days 365 -req -in ca.csr -out ca.pem
# Certificate A is created like this:
openssl genrsa -out client.key 1024
openssl req -new -key client.key -out client.csr
openssl ca -in client.csr -out client.cer
- Эта команда неявно зависит от корневого сертификата, для которого она находит требуемый информация в файле конфигурации OpenSSL, однако сертификат B должен полагаться только на A, который не зарегистрирован в файле конфигурации, поэтому предыдущая команда здесь работать не будет.
Какую команду я должен использовать для создания сертификатов B и выше?
-
Редактировать:
Я нашел ответ в этой статье: Сертификат B (цепочка A ->B) может быть создан с помощью этих двух команд, и этот подход, похоже, работает хорошо.:# Create a certificate request openssl req -new -keyout B.key -out B.request -days 365 # Create and sign the certificate openssl ca -policy policy_anything -keyfile A.key -cert A.pem -out B.pem -infiles B.request
Я также изменен файл
openssl.cnf
:[ usr_cert ] basicConstraints=CA:TRUE # prev value was FALSE