SSL. Делаем защищённый сайт HTTPS

Если где-то вам придётся покупать SSL сертификат, то там скорее всего будет инструкция по использованию, но даже с инструкцией это головная боль, если не делаешь это каждый день. Поэтому вот ещё одна шпаргалка.

Сначала ВАМ САМИМ надо сгенерировать ключ и CSR.
 
Ключ — это ваш секрет. Его не должен знать никто, даже сертифицирующая организация.
CSR — Certificate Signing Request — это файл, который вы должны передать сертифицирующей организации
Генерируется всё это счастье на вашем сервере с использованием OpenSSL

openssl req -new -newkey rsa:2048 -nodes -keyout yourdomain.key -out yourdomain.csr
 
Приготовьтесь, программа будет задавать много вопросов про домен и компанию.

Когда CSR-файл сгенерирован, его надо послать сертифицирующей компании. В ответ она должна будет прислать вам готовый сертификат и intermediate-bundle сертификат. Собственно этот сертификат и есть предмет покупки.

В результате у вас на руках должны быть 3 файла: ключ, сертификат сайта и intermediate-bundle сертификат. Пути к этим файлам надо прописать в конфигах апача.


Apache Version < 2.4.8
Directive Path to Enter
SSLCertificateFile Certificate file path
SSLCertificateKeyFile Key file path
SSLCertificateChainFile Intermediate bundle path
Apache Version 2.4.8+
Directive Path to Enter
SSLCertificateFile Certificate file path
SSLCertificateKeyFile Key file path
SSLCACertificatePath Intermediate bundle path

Ну и перезагрузить апач после изменения конфигов.
В результате у вас должен подняться нормальный HTTPS сайт.

Напоследок я бы сделал принудительный редирект с 80 порта (HTTP) на 443(HTTPS).
Легче всего сделать это в .htaccess

RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
 
Всё, готово!