Разница между этими двумя методами генерации OpenSSL

#qt #sockets #ssl #openssl #x509

#qt #сокеты #ssl #openssl #x509

Вопрос:

Я пытаюсь создать свой собственный корневой центр сертификации.

Вот один из способов создания самозаверяющего корневого ключа / сертификата.

 openssl req -x509 -nodes -newkey rsa:2048 -subj /CN=$1/countryName=UK/stateOrProvinceName=UK/organizationName=Me -keyout $1.key.pem -out $1.cert.pem
  

И вот еще один.

 openssl genrsa -des3 -out $1.key.pem 2048
openssl req -new -subj /CN=$1/countryName=UK/stateOrProvinceName=UK/organizationName=Me -key $1.key.pem -out $1.csr
openssl x509 -req -days 36500 -in $1.csr -signkey $1.key.pem -out $1.crt.pem
  

Если я использую первый сертификат для создания соединения между клиентом и сервером (используя QSslSocket), тогда соединение выполняется нормально. Проблема в том, что дата в сертификате — 1975, и я не могу использовать ее для подписи любых других.

Я создал второй метод для генерации корневого сертификата с датой vaid, но соединение с сокетом ssl завершается сбоем с ошибкой «неизвестно» и без каких-либо других подсказок. Я проверил, что правильный сертификат используется как на клиенте, так и на сервере.

Что я делаю не так? Спасибо.

Ответ №1:

Если вы используете -days 36500 , то время переносится на 1975 год:

     Validity
        Not Before: Oct 18 11:57:31 2011 GMT
        Not After : Aug 18 05:29:15 1975 GMT
  

Используйте значение меньшего числа дней. Например:

 openssl req -x509 -days 3000 -nodes -newkey rsa:2048 -subj /CN=xx/countryName=UK/stateOrProvinceName=UK/organizationName=Me -keyout xx.key.pem -text -out xx.cert.pem
  

Тогда вы должны получить действительный день:

     Validity
        Not Before: Oct 18 12:01:17 2011 GMT
        Not After : Jan  4 12:01:17 2020 GMT
  

Комментарии:

1. Ах, wolframalpha.com/input/?i=days between now and 2038 ? Я не могу проверить это прямо сейчас, но похоже, что это так 🙂