SSL сертификат для сайта — прикручивание SSL-сертификата к сайту востребовано, все любят сайты с SSL сертификатом: и люди, и поисковые системы. Вот что говорит к примеру Google (там в конце статьи).
Для меня это новая тема была, да и не написана нигде пошаговая последовательность действий. Пришлось разбираться самому.
Полноценный сертификат для сайта бесплатно предлагает StartSSL и везде подобный сертификат стоит денег. Зачем они это делают? Кроме как рекламным ходом объяснить не могу. Тем не менее, сертификат есть. Как зарегистрироваться у них на сайте и как подтвердить права собственности на домен - это вы разберетесь без меня. Хотел рассказать именно про привязку сертификата.
Генерация ключей
Рассмотрю на примере CPanel'и. В ней, в разделе SSL, сначала заполняю запрос на подпись сертификата (CSR). Вместе с ним генерируется закрытый ключ (KEY).

Для закрытого ключа появляется запись в разделе Ключи на сервере.
В чем смысл? CSR привязан к KEY и именно этот CSR нужно вставить на StartSSL для генерации сертификата (CRT). Тогда и только тогда сертификат (CRT) соответствует закрытому KEY-ключу и получается пара:
- Открытая часть CRT, свободно распространяемая, которой шифруются запросы к сайту;
- Закрытая часть KEY, хранимая на сайте и используемая для расшифровки запросов.
И тут есть прикол, про который не все знают. Расскажу. CRT и KEY как две половинки целого. Если зашифровать с помощью CRT, расшифровать может только KEY. Если же зашифровать с помощью KEY, расшифровать может только CRT. Более того, сайт легко может сгенерировать обе половинки.
Так зачем же делать какой-то запрос CSR и куда-то отправлять? Для того чтобы Центр Сертификации (CA) сгенерировал вторую половинку и подписал своей подписью для валидности. Только для этого, ни для чего более.
Название "приватный ключ" полная условность. Любая из двух половинок технически подойдёт а качестве приватного ключа. Но вот генерируется только одна и именно она KEY. Надеюсь понятно объяснил.
Скачиваем сертификат. Это архив с файлами .crt
для разных версий веб-движка. Загружаем на хостинг нужную версию файла через раздел Сертификаты (CRT). У меня Apache, соответственно загружаю для Apache. Для CRT-появляется запись в разделе Сертификаты на сервере.
Установка
Теперь устанавливаем сертификат на сайт. Здесь особенность то, что на сайт сертификат устанавливается не файлом, а в виде текста:
-----BEGIN RSA PRIVATE KEY----- .... KCAQEArCQG213utzqE5YVjTVF5exGRCkE9OuM7LCp/FOuPdoHrFUXkAVXMZdMB5n y2MQcwf29J3A4i8zxpES9RdSEU6iIEsow98wIi0x1/Lnfx6jG5Y0/iQsG1NRlNCC aydGvGaC+PwwWiwYRc7PtBgV4KOAVXMZdMB5nFRaekQ1ksdH/360KCGgljPtzTNl 09e97QBwHFIZ3ea5Eih/HireTrRSnvF+ywmwuxX4ubDr0ZeSceuF2S5WLXH2+TV0 .... -----END RSA PRIVATE KEY-----
Такой текст можно увидеть в свойствах записи для KEY и CRT (почему так пояснял выше). Оттуда его нужно скопировать и поместить в два соответствующих поля, одно поле для закрытой части, другое для открытой. Если все правильно сделано, то в разделе Управление установленными сайтами SSL появится новая запись.

Чтобы SSL заработал нужно всего лишь поменять одну настройку в WordPress:

И если теперь набрать сайт в адресной строке как https://
— он откроется.
Настройка сайта
Вторая часть работы сделать всё только HTTPS. Ведь теперь все страницы дублируются. И как HTTP, и как HTTPS. Поисковикам это 100% не понравится. Много всяких способов написано. Самым простым мне показался способ через плагин Velvet Blues Update URLs. У этого плагина два основных поля, "что менять" и "на что" и вспомогательные поля "где менять". Сначала везде меняем все ссылки http://arny.ru
на https://arny.ru
.

Последнее. Ставим плагин, который осуществляет редирект запросов HTTP в HTTPS через файл htaccess
. Таких плагинов много, мне больше других понравился Really Simple SSL. Он имеет самое свежее обновление и больше всего установок среди подобных плагинов. Главный плюс его в том, что он действительно работает. 🙂

Но при этом плагин лепит https://
ко всем ссылкам на сайте. Половина ссылок перестала открываться и нужно вручную все ссылки перебрать/пересмотреть. Хорошо, что материала у меня на сайте не так много и сделать это несложно.
С этого момента все ссылки на внешние источники только в формате HTTPS, остальные ссылки на незащищенные сайты буду выкладывать как текст.
Добавление от 18.06.2016
Ну конечно же забыл еще один важный момент, поменять директивы Host
и Sitemap
в файле robots.txt
.
Добавление от 17.05.2017
Ну вот и закончилась халява StartSSL. Браузеры больше не признают сертификаты выданные этой компанией как надёжные, а отображают красный замок и перечёркнутое
перед названием сайта. Да и сам startssl.com не открывается:https

Переходим к запасному варианту Let's Encrypt. Сертификат также бесплатный. Недостаток в том, что выдаётся такой сертификат на 90 дней, не поддерживает поддомены, IPv6, домены на кириллице. Но поскольку мне это не особо сильно нужно, пойдёт. Здоровый жирный плюс: у моего хостера сертификат устанавливается автоматически из CPanel'и. Занимает это ровно 1 минуту. По истечении срока сертификат автоматически продлевается.
Automatic Let's Encrypt renewal for arny.ru was completed. The certificate now expires on 2017-10-15 07:04:00 +0300 MSK. This certificate will be automatically renewed at that point.