Изменение даты начала и окончания подписанных сертификатов openssl - PullRequest
0 голосов
/ 24 января 2019

У меня есть эти три утверждения для создания самоподписанного сертификата с имеющимся у меня корневым сертификатом.

openssl genrsa -out domain.org.key
openssl req -newkey rsa:2048 -nodes -keyout domain.org.key -subj "/C=CN/ST=GD/L=SZ/O=Acme, Inc./CN=*.domain.org" -out domain.org.csr
openssl x509 -req -extfile <(printf "subjectAltName=DNS:domain.org,DNS:www.domain.org") -days 1 -in domain.org.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out domain.org.crt

Однако здесь периоды действия могут быть изменены только на один день.Кто-нибудь знает, есть ли аргумент, который я мог бы добавить к ним, который позволил бы мне изменять начальную и конечную даты с точностью до секунд или минут.В целях тестирования мне нужно создать несколько сертификатов, срок действия которых варьируется всего за несколько минут.Я посмотрел на другие ответы, и они предлагают использовать команду ca:

openssl ca -config /path/to/myca.conf -in req.csr -out ourdomain.pem \
-startdate 0801010000Z -enddate 1001010000Z

Но я не уверен, как объединить эти два, так как вторая команда, кажется, только генерирует ключ длядомен.Может ли кто-нибудь помочь объединить две команды и / или изменить время проверки каким-либо другим способом, который не требует изменения моего системного времени.

1 Ответ

0 голосов
/ 24 января 2019

В командной строке openssl не предусмотрены параметры командной строки для установки даты начала и окончания для параметра «x509 -req».

Если вам действительно нужно это сделать, вы можете изменить исходный код openssl, чтобы сделатьто, что вы хотите.

В приложении \ req.c вам нужно изменить вызов "set_cert_times":

    if (days == 0) {
        /* set default days if it's not specified */
        days = 30;
    }
    if (!set_cert_times(x509ss, NULL, NULL, days))
        goto end;

int set_cert_times(X509 *x, const char *startdate, const char *enddate,
                   int days)

Если вы предоставите начальную дату и конечную дату, она переопределит параметр days.может сделать это:

if (!set_cert_times(x509ss, "0801010000Z", "1001010000Z", days))
    goto end;

Это жестко закодирует даты начала и окончания или, немного потрудившись, вы можете добавить поддержку параметров -startdate и -enddate в обработку x509 -req.

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