Я хотел бы установить своего собственного Респондента OCSP (просто для тестирования). Это требует, чтобы у меня были корневой сертификат и несколько сертификатов, сгенерированных от него.
Мне удалось создать самоподписанный сертификат с помощью openssl. Я хочу использовать его в качестве корневого сертификата. Следующий шаг должен был бы создать полученные сертификаты. Я, может казаться, не нахожу документацию относительно того, как сделать это как бы то ни было. Кто-либо знает, где я могу найти эту информацию?
Править
Ретроспективно, на мой вопрос полностью еще не отвечают. Для разъяснения проблемы, я представлю свою цепочку сертификата как это:
КОРЕНЬ->-> B-> C->...
Я в настоящее время могу создать КОРЕНЬ и сертификаты, но я не узнал, как сделать более длинную цепочку.
Моя команда для создания корневого сертификата:
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
Сертификат A создается как это:
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 (объединяют в цепочку-> 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
Этот подход, кажется, работает хорошо.
Можно использовать OpenSSL непосредственно.
Создайте закрытый ключ Центра сертификации (это - Ваш самый важный ключ):
openssl req -new -newkey rsa:1024 -nodes -out ca.csr -keyout ca.key
Создайте самоподписанный сертификат своего CA:
openssl x509 -trustout -signkey ca.key -days 365 -req -in ca.csr -out ca.pem
Выпустите клиентский сертификат первой генерацией ключа, затем запросите (или используйте тот, обеспеченный внешней системой), затем подписывают сертификат с помощью закрытого ключа CA:
openssl genrsa -out client.key 1024
openssl req -new -key client.key -out client.csr
openssl ca -in client.csr -out client.cer
(Вы, возможно, должны добавить некоторые опции, поскольку я использую эти команды вместе со своим openssl.conf файлом. Вы, возможно, должны установить свой собственный .conf файл сначала.)
OpenSSL идет со сценарием Perl "CA.pl", чтобы помочь Вам создать самоподписанный корневой сертификат CA, наряду с закрытым ключом соответствия, плюс несколько простых файлов и каталогов, чтобы помочь отслеживать любые будущие сертификаты, которые Вы подписываете (иначе проблема) с тем корнем Приблизительно. Это также помогает Вам генерировать другие пары ключей и сертификат, подписывая запросы (CSRS) и помогает Вам обработать их CSRS (то есть, сертификаты проблемы для них), и т.д.
Обратите внимание, что много продуктов требуют, чтобы сертификаты CA содержали определенный атрибут, отмечающий их как сертификаты CA, или они не будут приняты как допустимые подписывающие лица/выпускающие других сертификатов. Если самоподписанный сертификат, который Вы создали, не содержит тот атрибут, Вы могли бы испытать затруднения, заставив другое программное обеспечение рассматривать его как действительный корневой сертификат CA.
Если я вспоминаю правильно, синтаксис проходит примерно так:
CA.pl -newca # Create a new root CA
CA.pl -newreq # Create a new CSR
CA.pl -sign # Sign a CSR, creating a cert
CA.pl -pkcs12 # Turn an issued cert, plus its matching private key and trust chain, into a .p12 file you can install on another machine