Переход блога на HTTPS

Раздел: Советы
Написано: 14.06.2015
Автор: Antonio

После того как мне мой любимый хостер-дата-центр прислал письмо, что Мозилла возьмется за сайты без HTTPS и будет их гнобить угнетать, да и заявления Google о понижении в выдаче, тоже ничего хорошего не сулят.

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

no https site, понижение сайтов в выдаче без https

Сказано, сделано, начинаем переход на HTTPS!


1. Выбор сертификата.

Для начала перехода нам нужно определиться с сертификатом, их на рынке разнообразное количество от разных фирм (центров сертификации), есть даже бесплатные (но если они не тестовые, с ними могут быть проблемы у различных браузеров).

Мне хотелось чтобы в адресной строке браузера было зеленым написано название, однако есть несколько но:

— минимум нужен сертификат Comodo SGC SSL (сейчас его цена со скидкой 90$ в год);
— сертификаты такого уровня выдаются только организациям, после проверки документов.

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

Нам же подойдет обычный недорогой сертификат Comodo Positive SSL или Comodo Essential SSL.
Эти сертификаты сейчас по акции можно купить за 7$/год, например — ссылка купить сертификат.

sertificate ssl купить недорого скидка

Так же можно заказать сертификат там где вы берете хостинг или VPS, однако обычно там будет немного дороже. Зато конечно проще.

Я для начала сделал бесплатный сертификат на 90 дней на сайте Comodo (напишите в поиске free ssl comodo и вылезет страница).

Заполнил на Комодо нужные поля по шагам.

Произвел генерацию приватного ключа:

openssl genrsa 2048 > key.pem

Создал запрос на сертификацию на основе секретного ключа:

openssl req -new -key key.pem -out csr.pem

Пишу по памяти, могут быть неточности в ходе процесса, но у вас все получится, если будете читать и не будете спешить.

Заполнил, адреса, почты, телефоны и прочее все что нужно.

На почту пришел архив с файлами такого вида

STAR_yourdomain_ext.crt
COMODORSADomainValidationSecureServerCA.crt
COMODORSAAddTrustCA.crt
AddTrustExternalCARoot.crt

«Засовываем» все нужное в один файл командой

cat STAR_yourdomain_ext.crt COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt AddTrustExternalCARoot.crt > bundle.cer

Конечно же вписываем вместо STAR_yourdomain_ext ваше доменное имя.

2. Настройка сервера (nginx)
Хорошо, у нас уже есть сертификат, ключ и надеюсь первым сервером, который раздает статику стоит nginx, если у вас Apache, то начните с настройки и установки nginx перед Апачем.

Создаем каталог, например тут

mkdir /etc/nginx/ssl

Копируем по ssh на сервер наши ключи (привожу уже реальные, свои названия)
nemcd_com.cer
nemcd_com.pem

Устанавливаем на каталог права доступа (чтобы не добрались плохие люди :-) )

chmod 600 /etc/nginx/ssl

Переходим к файлам конфигурации сайтов nginx
/etc/nginx/sites-enabled/nemcd.com

В секцию 80-го порта добавляем редирект с http на https (делаем 301 редирект)

server {
    listen       80;
    server_name  nemcd.com www.nemcd.com;
    return 301 https://nemcd.com$request_uri;

И добавляем еще новую секцию с описанием 443 порта

server {
    listen 443 ssl;
    server_name nemcd.com www.nemcd.com;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
 
location ~* \.(jpg|jpeg|gif|bmp|png|pdf|zip|css|js|swf|ico|tgz|gz|rar|bz2|doc|xls|exe|ppt|txt|tar|mp3|avi|cur|htm|html|jar|jnlp)$ {
root         /data/site/nemcd.com/www;
expires      30d;
}
 
    ssl    on;
    ssl_certificate         /etc/nginx/ssl/nemcd_com.cer;
    ssl_certificate_key     /etc/nginx/ssl/nemcd_com.pem;
 
    access_log /var/log/nginx/nemcd.com-ssl_access.log;
    error_log /var/log/nginx/nemcd.com-ssl_error.log;

Включаю логи во время тестирования, потом access можно убрать, а error желательно оставить для мониторинга возможных ошибок.

Из особенностей: я пока не включаю технологию SPDY и сокетную опцию SO_REUSEPORT (которая появилась в версии nginx 1.9.1), эти технологии я буду опробовать на новом тестовом VPS, который я делаю тут ссылка (очень недорого и сейчас акция)

Так же строкой ssl_protocols TLSv1 TLSv1.1 TLSv1.2; мы указали не использовать и отключить SSLv3 полностью, чтобы не подвергнуться атаке POODLE.

Релоадим nginx и пробуем зайти на блог, уже должно работать, если конечно нет ошибок.

service nginx reload

3. Приведение к зеленому статусу https
Скорее всего у вас уже начал работать блог по https, однако картинки и возможно стили, может js файлы плагинов все еще запрашиваются с http, в таком случае у вас в IE будет предупреждение, а в Хроме не будет такого зелененького

green nemcd.com

Теперь нас предстоит довольно кропотливая работа, нужно заменить все упоминания http, на https. И делать это нужно аккуратно и с умом.

Для начала переходим в админку блога и меняем http на https — это делается в Настройки — Общие

ch admin wordpress https

Возможно вы не сможете зайти в админку и у вас будет ошибка ERR_TOO_MANY_REDIRECTS, я напишу отдельную заметку с решением — ссылка.

После того как поменяли, дальше меняем адреса к картинкам блога, это делается запросом MySQL, например в PHPMyAdmin

Заменить картинки в блоге на https

UPDATE wp_posts SET
post_content = REPLACE(post_content, 'http://nemcd.com/', 'https://nemcd.com/');

Замените nemcd.com на адрес вашего блога.

Дальше я долго копался в css и различных модулях, искал Firebug’ом где вызывается http и правил.

В итоге все получилось.

4. SiteMap и Robots, аналитика
Проверяем чтобы sitemap.xml отдавал ссылки и они начинались с https, скармливаем Яндекс Вебмастеру новый sitemap.xml

Правим robots.txt
я заменил там на

Host: https://nemcd.com
Sitemap: https://nemcd.com/sitemap.xml

В Google Analitics я добавил сайт как https и Google Webmaster.

В следующих статьях я напишу как и чем тестировать https, как бороться с ошибкой при входе в админку wordpress wp-admin 302 redirect, SPDY, HSTS, SO_REUSEPORT.

Подписывайтесь на уведомление о новых статья на e-mail и будете в курсе всего :-)

Поделиться с друзьями или в соц.сетях (спасибо)
Ещё похожие заметки:

3 комментария

Antonio
Июн 14, 2015 22:53

Ух, долго писал статью,
надеюсь кому-нибудь поможет обуздать https =)

 
Sitego
Июн 27, 2015 05:22

Всё это конечно интересно, но если разобраться, то для некоммерческих сайтов сертификат — это лишнее. Понятное дело, когда на сайте ведутся какие-то манипуляции с передачей данных пользователя, финансовой информации и тому подобное. Но когда это просто информационный источник о чём либо, где посетитель зашёл, получил информацию и ушёл, какой смысл шифровки?

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

Читал на форумах буржунета, там многие недовольны заявлением Mozilla о прекращении, в туманном будущем, поддержки HTTP и переход только на HTTPS. Вот цитата с англоязычного форума Mozilla переведённая на русский

Ричард Барнс (Ведущий инженер Firefox по безопасности) продал свою душу дьяволу, и именно поэтому он толкает эту повестку дня.

Mozilla, вы потеряете большое число клиентов в пользу хрома. Ваша стратегия в значительной степени полное *****

И таких комментариев там десятки тысяч. Mozilla просто потеряет колоссальное число своих постоянных пользователей. Произойдёт это потому, что не каждый себе будет покупать сертификат даже из принципа («всем врагам на зло»), а пользователей будет раздражать постоянные ошибки в браузере на сайтах без сертификатов, тогда как в других браузерах такой ошибки не будет. Все просто перейдут на другие браузеры.

Впрочем в Mozilla Firefox это тоже прекрасно понимают, поэтому вслед за первым их заявлением последовало пояснение, что эта фишка будет вводиться очень постепенно и аккуратно. Так что не скоро ещё. Кроме того, можно будет в настройках about:config изменить настройку и браузер будет работать как и раньше.

 
Antonio
Июн 28, 2015 12:36

Согласен, все так и было раньше, однако изменения всегда приходят и так же и в этом случае.

— наличие сертификата ограничит создание кучи различных сателитов, так как на них нужны будут или отдельные или мультисертификаты, кстати так будет проще проследить владельца сетки сайтов.

— 7$ в год это не так много, начинающий вебмастер может использовать площадки сайтов, там скорее всего будут мультисертификаты или группы в социальных сетях.

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

Так что в общих чертах это дело не остановить (переход на https).
Кстати тот же мозилла еще с кем-то (хотел писать статью и забылось) разрабатывает проект с ПО для бесплатных сертификатов.

Получается это следующий шаг эволюции веб.

 

Написать

Копирование информации с сайта возможно только с указанием прямой ссылки - https://nemcd.com