Як перейти з HTTP на HTTPS – проста інструкція встановлення SSL
Веб у своєму розвиткові рухається в напрямку використання безпечного протоколу шифрування HTTPS за замовчуванням. Даний напрямок, крім іншого, стимулюється і великими пошуковими системами, як наприклад Google, який ще в 2014 році оголосив, що HTTPS стане сигналом SEO-ранжування. Однак, крім такого пошукового сигналу, перехід сайту на HTTPS принадний і іншими «смаколиками», наприклад:
- Захист конфіденційності користувачів (логіни, паролі, кредитні картки тощо)
- Браузери позначають сайти з протоколом HTTP як небезпечні
- Можливість використовувати переваги HTTP/2 (мультиплексування, доступ до деяких API і т.п.)
- Захист свого рекламного доходу від перехоплення недобросовісними Інтернет- та Wi-Fi-провайдерами (які на незахищених сайтах «крутять» свою рекламу)
Ми не будемо пильно розглядати ці та інші переваги, а більш детально зупинимося на самому процесі переходу з HTTP на HTTPS. Ваше бажання перейти на сайт з HTTPS приймається як доконаний факт.
Етапи переходу на сайт HTTPS:
- Вибір і отримання SSL сертифікату
- Встановлення сертифікату на сервер
- Перезапуск сервера
- Перевірка встановлення сертифіката SSL на хостинг
- Редирект з сайту HTTP на сайт HTTPS
Вибір і отримання SSL сертифікату
Для початку вам потрібно визначитися з тим, безкоштовний або платний вам потрібен сертифікат SSL-протоколу. Невеликим сайтам і блогам цілком може вистачити і безкоштовного SSL-сертифіката, або використання, наприклад, самопідписаного (самозавіреного) SSL сертифікату. Такі сертифікати не вимагають додаткових фінансових витрат, але мають ряд істотних обмежень (наприклад, короткий термін дії). Безкоштовні сертифікати найпростіше отримати у хостера (якщо ваш хостинг досить «просунутий» і він видає такі сертифікати, в цьому випадку хостинг-провайдер також допоможе вам і з встановленням сертифіката). Безкоштовні цифрові SSL-сертифікати видають також і великі центри сертифікації (наприклад, Let’s Encrypt, CloudFlare і схожі).
Платні ж сертифікати мають ряд додаткових переваг, від яких і залежить їх ціна. Чим більше переваг ви хочете від цифрового сертифікату, тим більше буде його ціна. Наприклад, найдорожчий SSL-сертифікат (мультидоменний, з розширеною валідацією, «зеленим адресним рядком у браузері» і т.п.) обійдеться в кілька сотень, а то й тисяч, доларів на рік.
Ціна бюджетних SSL сертифікатів стартує від $10-15 на рік. Найвідомішими центрами сертифікації є такі компанії як Comodo, GeoTrust, Symantec і Trustwave. Повторюся: багато хостинг-провайдерів є дилерами великих центрів сертифікації та цифровий SSL-сертифікат можна купити безпосередньо у них; в цьому випадку хостинг-компанія допоможе вам і з його установкою.
Встановлення сертифіката на сервер
Після вибору і отримання сертифікату SSL (платного або безкоштовного) прийшла пора встановити його на свій сервер. Тут можуть бути різні шляхи в залежності від того, де ви придбали сертифікат. Будемо виходити з того, що ви обрали платний сертифікат і встановити його ви взялися самостійно.
Великі хостери дозволяють встановлювати цифровий сертифікат через панель управління хостингом (наприклад, через ISPmanager або DirectAdmin). У цьому випадку від вас вимагається мінімум зусиль: перейти до відповідного пункту (наприклад, «SSL Сертифікати») і далі клікати на потрібних пунктах. Або ж скопіювати потрібні дані у відповідні поля форми. Такий метод встановлення є рекомендованим.
УВАГА: наступний метод встановлення призначений тільки для досвідчених користувачів, які знають, що роблять.
Дещо складніше справа йде з установкою через SSH (або FTP):
- вручну копіюємо файли сертифіката (сам сертифікат з розширенням .crt і закритий ключ з розширенням .key) на сервер
- змінюємо файл налаштувань конфігурації веб-сервера (наприклад,
httpd.conf
для сервера Apache, абоnginx.conf
для сервера Nginx), де прописуємо включення режиму SSL, а також шлях до файлів сертифіката. - перезапускаємо веб-сервер
Приклад рядків у файлі конфігурації для включення режиму SSL при веб-сервері Apache:
<VirtualHost x.x.x.x:443> DocumentRoot /var/www/ ServerName ВашДомен.com SSLEngine on SSLCertificateFile {шлях до файлу}вашдомен.crt SSLCertificateKeyFile {шлях до файлу}вашдомен.key SSLCertificateChainFile {шлях до файлу}root.crt </VirtualHost>
де:
x.x.x.x – це IP-адреса вашого домену,
а 443 – це TCP-порт, який слухає HTTPS за замовчуванням (для HTTP за замовчуванням 80-й порт)
Приклад рядків у файлі конфігурації для включення режиму SSL при веб-сервері Nginx:
server { listen x.x.x.x:443; server_name ВашДомен.com; ssl on; ssl_certificate {шлях до файлу}вашдомен.crt; ssl_certificate_key {шлях до файлу}вашдомен.key; }
де:
x.x.x.x – це IP-адреса вашого домену
Перезапуск сервера
УВАГА: виконуйте цей пункт, тільки якщо ви встановлюєте сертифікат вручну, і ви є досвідченим користувачем, який знає, що робить.
Після встановлення SSL-сертифіката на сервер потрібно перезапустити веб-сервер, щоб зміни вступили в силу.
Приклади команд для перезапуску веб-сервера (для різних ОС команди можуть відрізнятися):
Для сервера Apache виконайте SSH-команду
/etc/init.d/httpd restart
Для сервера Nginx виконайте SSH-команду
/etc/init.d/nginx restart
Перевірка встановлення сертифіката SSL на хостинг
Після встановлення сертифіката час перевірити успішність такого встановлення. Найпростіший спосіб перевірки сертифіката для сайту з https – набрати в адресному рядку браузера адресу свого сайту із зазначенням перед доменом https://. Якщо встановлення було успішним, то ваш сайт повинен відображатися нормально і всі стилі, скрипти, картинки і сторінки повинні нормально підвантажуватись. Таке рідко в реальному житті буває з першого разу, але тим не менше :))
Протестувати встановлення на сайт https-а можна і через онлайн-інструменти (наприклад, SSL Labs або SSL Checker).
Редирект з http на сайт https
Після успішного встановлення і перевірки на сайті https`а можна всі запити до свого домену перенаправляти на обов’язкові SSL/HTTPS відповіді.
Нижче зазначено фрагмент коду, який потрібно для цього додати в файл .htaccess в корені сайту (якщо у вас сервер Apache).
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
АБО так:
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule (.*) https://vashdomen.com/$1 [R=301,L] </IfModule>
Для сервера Nginx директива буде така:
# nginx location / { rewrite ^(.*)$ https://vashdomen.com/$1 redirect; }
(не забудьте скрізь використовувати замість vashdomen.com свій власний домен)
(також не забувайте робити бекап файлів і бази даних перед їх редагуванням)
Рекомендуємо також ознайомитись:
Щасливого вашому сайту HTTPS’а!