Создание сертификатов для SSL
Создание ключа
Первым делом необходимо создать приватный ключ (private key):
# openssl genrsa -des3 -out domain.ru.key 2048
Generating RSA private key, 2048 bit long modulus
……………………………………..+++
……………………………….+++
e is 65537 (0x10001)
Enter pass phrase for domain.ru.key:
Verifying — Enter pass phrase for domain.ru.key:
При создании ключа необходимо указать ключевую фразу (и запомнить ее).
Создание подписанного сертификата
После того, как сгенерирован ключ, можно создавать самоподписанный сертификат (CSR — Certificate Signing Reques):
# openssl req -new -key domain.ru.key -out domain.ru.csr
Enter pass phrase for domain.ru.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.
——
Country Name (2 letter code) [AU]:RU
State or Province Name (full name) [Some-State]:Russia
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Domain.Ru
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:domain-2.ru
Email Address []:ssl@domain-2.ruPlease enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Удаление пароля из ключа
Неприятной особенностью ключа с паролем является то, что Apache или nginx будет регулярно спрашивать пароль при старте. Очевидно, что это не очень удобно (если только кто-то не находится постоянно рядом на случай перезагрузки или аварийной остановки). Для удаления ключа из пароля необходимо выполнить следующее:
# cp domain.ru.key domain.ru.key.orig
# openssl rsa -in domain.ru.key.orig -out domain.ru.key
Enter pass phrase for domain.ru.key.orig: <пароль-который-указывался-при-создании-domain.ru.key>
writing RSA key
Генерация SSL сертификата
Далее, создаем сам SSL сертификат:
# openssl x509 -req -days 365 -in domain.ru.csr -signkey domain.ru.key -out domain.ru.crt
Signature ok
subject=/C=RU/ST=Russia/O=Domain.Ru/CN=domain-2.ru/emailAddress=ssl@domain-2.ru
Getting Private key
Теперь есть все, что необходимо для создания SSL-соединений.
Правильное расположение SSL сертификатов
Заключительным шагом в создании SSL сертификата будет распределение полученных файлов в соответствующие директории. Во-первых, копируем сам сертификат:
# cp domain.ru.crt /etc/pki/tls/certs/
Во-вторых, копируем ключ:
# cp domain.ru.key /etc/pki/tls/private/
И в-третьих, удаляем, все то, что было создано в текущей директории:
# rm domain.ru.crt domain.ru.key domain.ru.csr domain.ru.key.orig
Добавляем сертификаты в Apache
Редактируем файл /etc/httpd/conf.d/ssl.conf и меняем..
SSLCACertificateFile /etc/pki/tls/certs/domain.ru.crt
SSLCACertificateKeyFile /etc/pki/tls/domain.ru.key
Сохраняем файл и перезапускаем апач.
# service httpd restart
Жили как-то до этого без всяких сертификатов, сейчас приходится бегать по всяким хострадарам закинув язык за плечи, искать хостинг с недорогим или бесплатным s-s-l.
Мамочки, такие старые посты ещё кто-то читает. Спасибо. ^^»
На мой скромный взгляд сейчас ситуация гораздо лучше. С появлением Let’s Encrypt отпала необходимость в самоподписанных сертификатах. И на данный момент 99% хостеров уже предлагают их сразу, так как данная функция добавлена во все популярные хостинг-панели.