Прочитал заметку про полезные сервисы и вспомнил, что недавно писал другу об одной очень полезной халяве. Что добру пропадать? Сделаю из письма пост, вдруг кому будет полезно.
Сейчас происходит массовый переход сайтов на безопасный протокол SSL. Этот процесс всячески стимулируется Google - скоро все сайты без SSL будут помечены как небезопасные при просмотре в браузере Google Chrome. Чтобы не пугать своих посетителей, лучше настроить сайты на использование SSL.
Для его работы нужны сертификаты безопасности, которые выпускаются ограниченным кругом организаций. Хостеры стараются на этом заработать. Например, у моего русского хостера сертификат на 1 год на 1 сайт стоит порядка 2 500р. Меня жаба давит платить эти деньги.
В итоге нашел в сети способ бесплатной установки SSL с помощью сайта Cloudflare.com. Отзывы об этом сервисе самые разные - от восторженных (поскольку он задуман как сервис, помогающий защититься от DDOS-атак и прочей хрени) до предостерегающих (часть используемых сервисом IP блокируется нашим неквалифицированным Росчегототамконтролем вместе с цензурируемыми сайтами). Не исключено, что негатив про сервис идет от самих DDOSеров :)
Процедура такая:
1. Регистрируешься на https://www.cloudflare.com/
2. В правом верхнем углу кнопка +Add Site. Добавляем URL нашего работающего сайта (или сразу нескольких, через запятую).
3. Begin scan. Continue setup.
Сервис покажет, какие протоколы он будет перехватывать (DNS, Http) - оранжевые или серые тучки.
Continue
4. Выбираем бесплатный тариф Free website. Continue
5. Сервис показывает, какие используются nameservers (от регистратора доменов) и предлагает их заменить своими (обычно это Бренда и Ларс - brenda.ns.cloudflare.com и lars.ns.cloudflare.com).
6. Теперь надо надо сделать две вещи в самом Wordpress на твоем сайте:
6а. Установить и включить два плагина: Cloudflare и Cloudflare Flexible SSL. Их можно найти в каталоге плагинов Wordpress по названиям.
6б. В общих настройках сайта (/wp-admin/options-general.php) указать Адрес Wordpress и Адрес сайта как https://твойсайт.com.
7. Сейчас надо перейти на сайт нашего регистратора доменных имен и заменить тамошние ns-серверы на бренду и ларса.
Теперь нужно подождать некоторое время, пока регистратор заменит ns-записи. На смену записей может уйти до 24 часов. Cloudflare.com уверяет, что в это время перебоев в работе сайта быть не должно.
Если ns-записи еще не обновились, можно нажать синюю кнопку Recheck nameservers (разрешается 1 раз в час).
8. Но лучше пока настроить плагин Cloudflare на твоем сайте. Переходим в настройки плагина. Там нужно указать email, с которым ты зарегистрирован в cloudflare и ключ API.
Ключ нужно взять на сайте Cloudflare. Жмем Get your API-key, попадаем на https://www.cloudflare.com/a/account/my-account, листаем до Global API key, синяя кнопка View API key. Копируем ключ (строка типа 91fsd152b32c8d4gg5ah8e8432ke54545618a30f857a) и вставляем в настройки плагина.
9. Возвращаемся на страницу нашего домена в cloudflare. Наверху там есть множество синих кнопок. Сейчас нам нужна кнопка Crypto. На открывшейся странице выбираем SSL - Flexible. Скроллим в самый низ страницы и включаем Automatic HTTPS Rewrites.
10. Дождемся обновления ns-имен. Теперь нужна кнопка Page Rules. Создаем правило переадресации (чтобы с http:// нас всегда перебрасывало на https://). Жмем Create page rule. Там пишем адрес http://твойсайт.com/* и выбираем из списка Always Use HTTPS.
Кажется, все.
На некоторое время сайт может перестать отзываться. Но это не страшно. Через какое-то он снова заработает, уже с адресом https://
Но на случай, если вдруг что-то пошло не так и теперь нет доступа к админке (например, я как-то раз забыл включить плагины Cloudflare и Cloudflare Flexible SSL, а в настройках сайта уже указал адрес с https://), то можно временно выключить траффик через Cloudflare.
Или воспользоваться вот этим советом: в файле /wp-config.php (вначале, после <?php ) добавляем строчку
_SERVER['HTTPS'] = 'on';
И перед строчкой /* That's all, stop editing! Happy blogging. */ ставим
define('FORCE_SSL_ADMIN', true);
define('FORCE_SSL_LOGIN', true);
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)
$_SERVER['HTTPS']='on';
Мне помогло.
Смотрятся все эти инструкции страшновато. Но на самом деле, достаточно один раз пройти этот путь, и становится понятно, что все довольно просто.