#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 ? Я не могу проверить это прямо сейчас, но похоже, что это так 🙂