Почему openssl игнорирует -days для даты истечения срока действия самоподписанного сертификата?

У меня есть сценарий bash, который генерирует самоподписанный сертификат и отлично работает:

#! /bin/bash

# Generate self signed root CA cert
openssl req -nodes -x509 -days 358000 -newkey rsa:2048 -keyout ca.key -out ca.crt -subj "/C=IR/ST=TEH/L=Torento/O=CTO/OU=root/CN=es.example.com/emailAddress=info@example.com"

# Generate server cert to be signed
openssl req -nodes -newkey rsa:2048 -days 358000 -keyout server.key -out server.csr -subj "/C=IR/ST=TEH/L=Torento/O=CTO/OU=server/CN=es.example.com/emailAddress=info@example.com"

# Sign the server cert
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt

# Create server PEM file
cat server.key server.crt > server.pem


# Generate client cert to be signed
openssl req -nodes -newkey rsa:2048 -days 358000 -keyout client.key -out client.csr -subj "/C=IR/ST=TEH/L=Torento/O=CTO/OU=client/CN=es.example.com/emailAddress=info@example.com"

# Sign the client cert
openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAserial ca.srl -out client.crt

# Create client PEM file
cat client.key client.crt > client.pem

Когда я проверяю время истечения срока действия сгенерированного client.pem , он показывает время истечения 10 августа:

$ openssl x509 -enddate -noout -in client.pem
notAfter=Aug 10 12:32:07 2018 GMT

В чем проблема с датой истечения срока действия?

5
задан 11 July 2018 в 15:54
2 ответа

Срок действия устанавливается с помощью openssl x509 , а не с помощью openssl req . Если вы укажете параметр -дней с командой x509 , он будет работать.

Вы получите 30/08, потому что нет -дней параметр, который отменяет срок действия сертификата по умолчанию в 30 дней, как указано в x509 странице руководства:

-days arg
указывает количество дней, в течение которых сертификат должен действовать. По умолчанию - 30 дней.

Примечание: создание сертификата со сроком действия 358000 дней (980 лет!) Слишком долго, если вам нужна разумная безопасность.

7
ответ дан 3 December 2019 в 01:23

Срок действия сертификата устанавливается при создании этого сертификата.

  • openssl req сам по себе генерирует запрос на подпись сертификата (CSR). Указанные здесь -дней будут проигнорированы.

  • openssl x509 выдает сертификат из CSR. Здесь следует указать -дней .

Но:

  • openssl req -x509 объединяет req и x509 в один; он генерирует CSR и подписывает его, выдавая сертификат за один раз. Вот почему req поддерживает флаг -days , поскольку он передает его внутри команды x509 .
16
ответ дан 14 May 2020 в 10:26

Теги

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