Как создать мою собственную цепочку сертификата?

Я хотел бы установить своего собственного Респондента 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

Этот подход, кажется, работает хорошо.

62
задан 08.04.2010, 14:28

2 ответа

Можно использовать OpenSSL непосредственно.

  1. Создайте закрытый ключ Центра сертификации (это - Ваш самый важный ключ):

    openssl req -new -newkey rsa:1024 -nodes -out ca.csr -keyout ca.key
    
  2. Создайте самоподписанный сертификат своего CA:

    openssl x509 -trustout -signkey ca.key -days 365 -req -in ca.csr -out ca.pem
    
  3. Выпустите клиентский сертификат первой генерацией ключа, затем запросите (или используйте тот, обеспеченный внешней системой), затем подписывают сертификат с помощью закрытого ключа 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 файл сначала.)

28
ответ дан 07.12.2019, 08:17

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    
9
ответ дан 07.12.2019, 08:17

Теги

Похожие вопросы