Как сгенерировать сертификат openssl с истечением менее одного дня? - программирование

Как сгенерировать сертификат openssl с истечением менее одного дня?

Я пытаюсь создать сертификат подписанного сертификата CA с помощью команд openssl, как показано ниже, в Linux:

# openssl genrsa -des3 -out clientkey.pem 2048
# openssl req -new -key clientkey.pem -out clientcert.csr
# cp clientkey.pem clientkey.pem.org
# openssl rsa -in clientkey.pem.org -out clientkey.pem
# openssl x509 -req -days 1 -in clientcert.csr -out clientcert.pem -CA cacert.pem -CAkey cakey.pem -CAcreateserial

Можно ли указать время истечения в часах вместо дней? Мне нужно сгенерировать сертификаты с указанием времени истечения 1 часа для некоторых тестов.

Команда Openssl, похоже, поддерживает некоторые опции для указания startdate и enddate, но я не могу понять, как это использовать. (Я предполагаю, что enddate может поддерживать указание даты и времени).

#openssl x509 -req -startdate 120814050000Z -enddate 120814060000Z -in clientcert.csr -out clientcert.pem -CA cacert.pem -CAkey cakey.pem -CAcreateserial

unknown option 120814050000Z
usage: x509 args
.
.
-startdate      - notBefore field
-enddate        - notAfter field
.
.
-days arg       - How long till expiry of a signed certificate - def 30 days
4b9b3361

Ответ 1

Или вот другой способ, который я нашел для работы

Скажем, я хочу, чтобы мой сертификат истекал через 10 минут в качестве теста

Текущая дата - 17 февраля Текущее время в 16:40

Сначала я установил свою системную дату на -1 день: 16 февраля
Я установил системные часы на +10 мин: 4:50 вечера

Я создаю свой сертификат, используя openssl x509, чтобы истечь через 1 день, что на самом деле означает истечение на сегодняшний день Feb 17th

openssl x509 -req -days 1 -in clientcert.csr -signkey cert.key -out ssl.crt

Я тогда reset мои системные часы и время до фактической даты и времени и вуаля у вас есть сертификат, срок действия которого истекает через 10 минут!

Очевидно, что это не реальный способ делать что-то, но приятно и легко создавать самоподписанные сертификаты для использования dev.

Ответ 2

Параметры -startdate и -enddate для команды x509 являются параметрами отображения. Вы можете установить определенное время начала и окончания, используя команду ca, чтобы подписать сертификат.

Попробуйте что-то вроде этого:

openssl ca -config /etc/openssl.cnf -policy policy_anything -out clientcert.pem -startdate 120815080000Z -enddate 120815090000Z -cert ca.pem -keyfile cakey.pem -infiles clientcert.csr

Ответ 3

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

Я разработал его для преодоления ограничений командной строки openssl. Инструмент легкий, реализованный в Go без зависимостей под лицензией MIT.

Ответ 4

Вы можете установить -days на 0:

openssl x509 -req -days 0 -in clientcert.csr -signkey cert.key -out ssl.crt

Это создаст сертификат с notBefore и notAfter равным текущему времени (т.е. срок действия вашего сертификата истечет немедленно).