Я хотел бы настроить свой собственный ответчик OCSP (только для целей тестирования). Это требует, чтобы у меня был корневой сертификат и несколько сертификатов, сгенерированных из него.
Мне удалось создать самозаверяющий сертификат с помощью openssl. Я хочу использовать его в качестве корневого сертификата. Следующим шагом будет создание производных сертификатов. Я не могу найти документацию о том, как это сделать, однако. Кто-нибудь знает, где я могу найти эту информацию?
редактировать
Оглядываясь назад, я еще не полностью ответил на мой вопрос. Чтобы прояснить проблему, я представлю свою цепочку сертификатов следующим образом:
КОРЕНЬ -> A -> B -> C -> ...
В настоящее время я могу создавать сертификаты ROOT и A, но я не нашел, как сделать более длинную цепочку.
Моя команда для создания корневого сертификата:
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
Сертификат А создается так:
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
Этот подход, кажется, работает хорошо.