Как сгенерировать самоподписанный сертификат SSL?
Написал Ярослав Гасов   
06.07.2003

Share this!

Управление ключами и сертификатами осуществляется с помощью программы openssl. Чтобы сгенерировать новый самоподписанный сертификат выполните следующие команды:

 

1)  Создаем ключ и запрос: openssl req -new > new.cert.csr

(Или openssl req -new -nodes -keyout privkey.pem -out new.cert.csr)
2)  openssl rsa -in privkey.pem -out new.cert.key

(Или openssl rsa -in privkey.pem -des3 -out new.cert.key)

Этот шаг опциональный. Если его пропустить, переименовав privkey.pem в new.cert.key, то шаг №4 не понадобится.

 

По ходу Вам будет задан ряд вопросов по информации о содержимом сертификата, на вопрос "Common Name (eg, YOUR name) []:" введите имя сайта, для которого создается сертификат.

 

3) Теперь сами подписываем сертификат:

openssl x509 -in new.cert.csr -out new.cert.crt -req -signkey new.cert.key -days 365

(Или openssl req -new -x509 -days 365 -key new.cert.key -out new.cert.crt)

 

4) Чтобы Apache не натыкался на пароль (после шага №2):

cp new.cert.key new.cert.key~
openssl rsa -in new.cert.key~ -out new.cert.key

Будет запрошен пароль для дешифровки. 

 

Для подключения сертификатов к Apache необходимо сделать следующее:

 

<VirtualHost xxx.xxx.xxx.xxx:443>

... 

SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL 

SSLCertificateFile /path/to/certs/new.cert.crt

SSLCertificateKeyFile /path/to/certs/new.cert.key

SSLCACertificateFile /usr/local/ssl/certs/new4/Корневой_сертификат_подписавшей_организации.crt # - если подписан не самостоятельно

SSLOptions +StdEnvVars
SetEnvIf User-Agent ".*MSIE.*" \
             nokeepalive ssl-unclean-shutdown \
             downgrade-1.0 force-response-1.0

...

</VirtualHost>