Разница между этими двумя методами генерации OpenSSL - PullRequest
2 голосов
/ 18 октября 2011

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

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

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, и я не могу использовать его для подписи других.

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

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

1 Ответ

2 голосов
/ 18 октября 2011

Если вы используете -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
...