yakoffka.ru
грабли, костыли и велосипеды php, css, html, js и прочего

Миграция сайта на https

ass='h3art'>Прописываем сертификаты на сервере

Снова заходим на страницу редактирования домена в панели управления Vesta CP, открываем в текстовом редакторе notepad++ файл 2_your_domain.com.crt и все его содержимое вставляем в поле 'SSL Certificate';
В поле 'SSL Key' вставляем полученный нами ранее CSR;

Открываем файл 1_root_bundle.crt и все его содержимое вставляем в поле 'SSL Certificate Authority/Intermediate'

Сохраняем.

Теперь настраиваем переадрессацию для того, чтобы пользователь, вбив your_domain.com в адресной строке браузера попадал именно на https://your_domain.com. Для этого создаем шаблон при помощи команд, найденных в документации к Vesta CP

cd /usr/local/vesta/data/templates/web
wget http://c.vestacp.com/0.9.8/rhel/force-https/nginx.tar.gz
tar -xzvf nginx.tar.gz
rm -f nginx.tar.gz

В третий раз заходим на страницу редактирования домена в панели управления Vesta CP и выбираем в выпадающем списке Proxy Template значение только что созданного нами шаблона 'force-https'

Аналогичного результата можно добиться, прописав правила переадрессации в файле public_html/.htaccess:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Сохраняем.

Проверяем: Теперь при входе на сайт мы должны увидеть дефолтный index.html в директории public_shtml. Если это так, то переадресация работает.

Переименовываем public_html в public_shtml, и входим на сайт еще раз.

Теперь должен отобразиться наш сайт, а в адресной строке должно быть прописано гордое: https://your_domain.com

Правда у меня оно получилось не совсем гордое, в хроме так вообще отвратительное:

Соединение с www.your_domain.com зашифровано с использованием 256-разрядного шифрования. Однако эта страница содержит другие ресурсы, которые не являются безопасными. Эти ресурсы могут быть просмотрены третьей стороной во время передачи данных, а так же могут быть изменены злоумышленником для изменения вида страницы.

Избавляемся от рудиментов

Прежде всего идем в исходный код, и во всех ссылках на подключаемые ресурсы заменяем 'http://' на 'https://'. Это касается подключаемых скриптов, файлов стилей, изображений и не касается внешних ссылок. То есть необходимо добиться следующего:

<link rel='stylesheet' type='text/css' href='https://your_domain.com/css/normalize.css' />
<link rel='stylesheet' type='text/css' href='https://your_domain.com/css/icons.css' />
<link rel='stylesheet' type='text/css' href='https://your_domain.com/css/style1.css' />
<img src='https://your_domain.com/img/image_1.png' alt='Рис. 1 Изображение 1' title='Рис. 1 Изображение 1' width='419px' height='300px' />

Кроме этого необходимо проверить на отсутствие 'http://' файлы стилей, заменив url на либо на относительные, либо на 'https://'.

У меня, например последний прятался в файле .htaccess директории public_shtml в строке:

ErrorDocument 404 https://your_domain.com/404.html

После исправления этой строки я увидел, наконец, что соединение с сайтом является защищенным.

После этого проверьте работу сайта с новыми настройками при помощи инструмента Qualys SSL Server Test. Ждем оценки A или A+

cd /usr/local/vesta/data/templates/web
wget http://c.vestacp.com/0.9.8/rhel/force-https/nginx.tar.gz
tar -xzvf nginx.tar.gz
rm -f nginx.tar.gz

Server Name Indication (SNI)

< 1 2 3