Наверное, глупо игнорировать слова мирового лидера в поисковой выдаче. К тому же, если учесть, что российская поисковая система Yandex идет по пятам у Google (по мнению некоторых людей она отстает ровно на один год) и в ближайшее время будет также учитывать использование SSL.
Так как этот блог о Textpattern, то переводить на протокол SSL мы будем именно его. Сделаем более надежной и без того безопасную CMS.
Для этого лучше всего подойдет всеми известный StartSSL. Как получить сертификат у этой компании, думаю, объяснять не стоит. Там все просто! Если в кратце, то:
openssl req -newkey rsa:2048 -keyout yourname.key -out yourname.csr
В итоге сертификат должен состоять из:
Я рекомендую размещать ключи в /etc/nginx/ssl/имя_домена/, так как при большом количестве сайтов на одном сервере не получится путаницы с ключами.
Что такое Forward Secrecy можно прочитать на wiki Для генерации используем команду:
openssl dhparam -out /etc/nginx/ssl/имя_домена/dhparam.pem 4096
Эта команда может выполнятся продолжительное время. Примерно 5-10 мин.
В файл конфигурации вашего сервера добавляем код:
server {
listen 443;
...
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;
ssl_prefer_server_ciphers on;
ssl_stapling on;
ssl on;
resolver 8.8.8.8;
resolver_timeout 10s;
keepalive_timeout 60;
ssl_certificate /etc/nginx/ssl/имя_домена/sslname.crt;
ssl_certificate_key /etc/nginx/ssl/имя_домена/sslname.key;
ssl_dhparam /etc/nginx/ssl/имя_домена/dhparam.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'EECDH+ECDSA+AESGCM:AES128+EECDH:AES128+EDH:!RC4:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!CAMELLIA:!ADH';
add_header Strict-Transport-Security 'max-age=31536000';
add_header X-Frame-Options "DENY";
add_header X-Content-Type-Options "nosniff";
add_header Content-Security-Policy-Report-Only "default-src https:; script-src https: 'unsafe-eval' 'unsafe-inline'; style-src https: 'unsafe-inline'; img-src https: data:; font-src https: data:; report-uri /csp-report";
Я вношу этот код непосредственно в конфигурационный файл конкретного домена /etc/nginx/sites-available/имя_домена, но, если у Вас один сайт на сервере, можно и в /etc/nginx/nginx.conf
Также в location ~ \.php$ нужно добавить одну строчку:
location ~ \.php$ {
fastcgi_param HTTPS on;
...
}
Помимо этого не мешало бы добавить редирект с http на https. Для этого в этом же конфиге добавляем код:
server {
listen 80;
server_name имя_домена.ru;
rewrite ^(.*)$ https://имя_домена.ru$1 permanent;
}
Обычно этот год размещается выше всего остального.
Это тот пароль, который Вы устанавливали при создании сертификата на сайте StartSSL.
openssl rsa -in /etc/nginx/ssl/имя_домена/sslname.key -out /etc/nginx/ssl/имя_домена/sslname.key
и после этого перегружаем nginx. Для Debian это можно сделать командой:
service nginx restart
Теперь необходимо указать textpattern, что сайт работает на HTTPS. Для этого добавляем в основной конфигурационный файл /textpattern/config.php одну строчку:
<?php
$txpcfg['db'] = 'имя_базы';
$txpcfg['user'] = 'имя_пользователя';
$txpcfg['pass'] = 'пароль';
$txpcfg['host'] = 'localhost';
$txpcfg['table_prefix'] = '';
$txpcfg['txpath'] = '/var/www/example.ru/www/textpattern';
$txpcfg['dbcharset'] = 'utf8mb4';
define('PROTOCOL', 'https://');
?>
Это сообщение возникает из-за того, что на открытой странице вашего сайта подгружаются картинки/видео/js (css) файлы без протокола https. Вам нужно в web-инспекторе посмотреть какие ошибки есть в консоли и исправить все протоколы на https.
Помимо красивого зеленого значка в адресной строке браузера работу SSL-сертификата можно проверить на сайте – www.ssllabs.com Этот сайт даже выставляет оценку. Идеальная оценка должна быть А+.
P.S.S. После успешного результата не забываем рассказать Yandex`у о протоколе HTTPS на вашем сайте. В панели вебмастера этот раздел называется Переезд сайта.
Поочередно исполняем команды в поле ввода SQL-кода.
UPDATE textpattern SET body = replace(body, 'http:','https:');
UPDATE textpattern SET body_html = replace(body_html, 'http:','https:');
UPDATE textpattern SET excerpt = replace(excerpt, 'http:','https:');
UPDATE textpattern SET excerpt_html = replace(excerpt_html, 'http:','https:');
UPDATE textpattern SET image = replace(image, 'http:','https:')
]]>