Укажите дни (срок действия) для сгенерированного самозаверяющего сертификата с openssl - PullRequest
0 голосов
/ 26 августа 2018

Я не нашел, где я могу задать этот вопрос, но похоже, что это правильное место .

С помощью следующей команды я могу создать самозаверяющий сертификат для центра сертификации (CA):

$ openssl req -new -x509 -days 3650 -config ./openssl/ca.cnf -key ./dist/ca_key.pem -out ./dist/ca_cert.pem

Вы можете увидеть опцию -days, которая устанавливает дату окончания.И если я проверяю сгенерированный сертификат, я вижу, что опция days работает:

$ openssl x509 -enddate -noout -in ./dist/ca_cert.pem
notAfter=Aug 23 11:29:57 2028 GMT

И во всех местах / учебники люди также используют опцию days.

Однако как я могу указать ту же опцию в .cnf config?Я исследовал множество статей , но кажется, что ничего не работает (ca.cnf):

[ ca ]
default_ca      = my_ca
default_days    = 3650 # does not work
days            = 3650 # does not work

[ my_ca ]
...
default_days    = 3650 # does not work
days            = 3650 # does not work
...

[ req ]
...
default_days    = 3650 # does not work
days            = 3650 # does not work
...

Ничего из вышеперечисленного не работает, если я не использую параметр -days:

$ openssl req -new -x509 -config ./openssl/ca.cnf -keyout ./dist/ca_key.pem -out ./dist/ca_cert.pem
$ openssl x509 -enddate -noout -in ./dist/ca_cert.pem
notAfter=Sep 25 11:38:48 2018 GMT

Вы видите, что по умолчанию использовались 30 дней.

Где в .cnf config я должен указать -days option?

1 Ответ

0 голосов
/ 26 августа 2018

Глядя на его исходный код , кажется, что инструмент req не поддерживает чтение количества дней из файла конфигурации. Переменная days изменяется только в нескольких очевидных местах.

Это отличается в ca инструменте , где вы можете увидеть количество дней, считываемых из файла конфигурации здесь .

Существует несколько способов создания самозаверяющего сертификата для ЦС. Использование инструмента req кажется популярным для этого, вероятно, потому что вы можете сделать это в одну строку. Другой вариант, который я предпочитаю, заключается в том, чтобы (дополнительно) использовать инструмент ca, как вы это делаете с любым сертификатом. Таким образом, даже ваш самозаверяющий сертификат CA попадает в CA-администрацию. Это также дает вам способ сделать то, что вы просите, с опцией конфигурации default_days в разделе my_ca.

В качестве примера вы можете выполнить следующие команды. Сначала создайте запрос на подпись сертификата (CSR) с одновременным созданием пары ключей:

openssl req -newkey rsa:2048 -keyout dist/ca_key.pem -out ca_csr.pem -config openssl/ca.cnf

Затем отправьте CSR в CA, как и в случае с любым CSR, но с опцией -selfsign. Это требует, чтобы ваша структура каталогов CA была подготовлена ​​в первую очередь, что вам придется делать в любом случае, если вы хотите настроить свой собственный CA. Вы можете найти учебник по этому здесь , например. Отправка запроса может быть сделана следующим образом:

ca -selfsign -keyfile dist/ca_key.pem -in ca_csr.pem -out dist/ca_cert.pem \
    -outdir root-ca/cert -config openssl/ca.cnf

Будет применена настройка default_days в разделе my_ca вашего файла конфигурации, как и в моем случае:

$ openssl x509 -enddate -noout -in ./dist/ca_cert.pem
notAfter=Aug 23 15:21:17 2028 GMT

Обратите внимание, что все эти команды зависят от содержимого ваших файлов конфигурации. Возможно, вам придется поиграть с ними, чтобы заставить их работать на вас, но это дает вам общий подход.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...