Як встановлюється SSL-з'єднання




Як встановлюється SSL-з'єднання



Що таке SSL та TLS, як встановити та налаштувати

Основне встановлення та налаштування буде проходити під Debian 8 Jessie, вебсервер NGINX, в бекенді Apache або PHP-FPM.
Інструментарій: Far Manager та Putty.
Команди вводяться в консоль SSH.
Якщо ви авторизовані не під root, додайте перед консольними командами sudo

Що таке SSL, TLS

SSL (англ. secure sockets layer — рівень захищених cокетів) — криптографічний протокол, який забезпечує безпечний зв'язок між сервером та клієнтом. Цим протоколом шифрується інтернет-трафік, який неможливо прослухати. У 2014 році був скомпрометований (було виявлено вразливість), через що на підставі протоколу SSL 3.0 було створено стандарт TLS, що враховує помилки попередника, а SSL фактично припинив свій розвиток.

TLS (англ. Transport Layer Security - Безпека транспортного рівня) - криптографічний протокол, що забезпечує захищену передачу даних від сервера до клієнта. TLS є нащадком SSL 3.0. В основі роботи лежать симетричне шифрування для конфіденційності, асиметрична криптографія для автентифікації та коди автентичності повідомлень для збереження їхньої цілісності.

Цей протокол широко використовується в програмах, що працюють з Інтернетом, таких як веб-браузери, робота з електронною поштою, обмін миттєвими повідомленнями та IP-телефонія (VoIP).

Сьогодні, коли говорять про SSL, то зазвичай мають на увазі його нащадка TLS. Тому коли кажуть, що потрібно встановити SSL сертифікат на сайт, то, як правило, мають на увазі установку TLS сертифіката.

Чому потрібно використовувати SSL/TLS

Є як мінімум одна вагома причина: ви не зможете скористатися перевагами нового протоколу HTTP2 (HTTP/2 змінюється поточним стандартом HTTP/1.1), якщо для вашого сайту не встановлено і налаштовано сертифікат безпеки SSL/TLS.

Також безпека даних в інтернеті є все більш затребуваною та актуальною темою. І чим далі, тим більше: Google заявив, що наявність SSL-шифрування на сайті є позитивним фактором ранжування сайту в пошуковій видачі. Також наявність HTTPS є обов'язковим атрибутом для кожного e-commerce сайту: інтернет-магазинів, сервісів з прийому платежів, обмінників, а також платних сервісів, дані користувачів яких є бажаним видобутком хакерів. Щоб запобігти фішинг-атаці на користувача і не дати обдурити його, потрібно налаштувати SSL-сертифікат безпеки і шифрування даних, щоб він бачив підтвердження того, що знаходиться на правильному сайті.

Безкоштовні сертифікати SSL/TLS від Let's Encrypt

Рекомендую скористатися сертифікатами SSL/TLS від Let's Encrypt, оскільки:

  1. Вони безкоштовні;
  2. Підійдуть більшості проектів;
  3. Встановлення та налаштування відносно нескладні, і не займуть багато сил та часу.

З мінусів — сертифікат є актуальним 90 днів, тому налаштуємо його оновлення на автоматі.

Якщо у Вас є віртуальний хостинг, можете написати в службу підтримки, вам допоможуть отримати сертифікат і все налаштують. Якщо ж у вас є свій сервер, опис отримання сертифіката SSL, TLS та його налаштування на сервері буде далі.

Установка Certbot

Сам гайд із встановлення Let's Encrypt радить робити все через Certbot. Спрацює, якщо є доступ до SSH.

Certbot — це утиліта від Let's Encrypt, яка допомагає в налаштуванні SSL/TLS сертифіката на сервер та його подальше оновлення.

Встановлення Certbot у Debian 8 Jessie

Помічник Certbot у виборі версії сервера

Спочатку переконаємося, що certbot ще не встановлено:
certbot --help
Якщо побачите помилку, то треба його встановити.

apt-get install certbot -t jessie-backports

Якщо помилка вилізла The value 'jessie-backports' недоступний для APT::Default-Release as such a release is not available in the sources
, потрібно налаштувати підтримку Backports

Як настроїти підтримку Backports

Пишете в консоль (додає додаткове джерело для пакетів):

echo "deb http://ftp.debian.org/debian jessie-backports main contrib non-free" >> /etc/apt/sources.list

Потім оновлюєте список пакетів:

і знову намагаєтеся встановити Certbot:

apt-get install certbot -t jessie-backports

Потім перевіряєте, як вийшло

Установка Certbot в CentOS 7

Установка відбувається так:

yum -y install yum-utils
yum-config-manager --enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional
yum install certbot

Якщо у Вас є CentOS 6, скористайтеся універсальною інструкцією нижче.

Універсальна інструкція зі встановлення Certbot

wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
mv certbot-auto /usr/local/bin/certbot

Налаштування Certbot

Тепер, коли certbot встановлений (а ви можете переконатися в цьому, задавши команду
certbot --help ), раджу заглянути в cron-завдання

У директорії повинен з'явитися файл certbot з приблизно таким змістом

Останній рядок — це правило cron, яке перевірятиме сертифікати SSL, TLS двічі на день і оновлювати застарілі.

У підсумку, рядок виглядатиме приблизно так:

0 */12 * * * root test -x /usr/bin/certbot && perl -e 'sleep int(rand(3600))' && certbot -q renew && /etc/init.d/nginx reload
    Відкриваємо розклад планувальника (спочатку наведу приклад для nano, Потім для vim):
0 */12 * * * test -x /usr/bin/certbot && perl -e 'sleep int(rand(3600))' && certbot -q renew && /etc/init.d/nginx reload

Далі, підготовка, тестування та встановлення сертифікату для сайту.

Підготовка та тестування конфігурації SSL, TLS

Перед тим, як отримати сертифікат SSL/TLS, гарною практикою буде протестувати правильність налаштування сервера. Справа в тому, що якщо є проблема, яка не дасть отримати або оновити сертифікат: центр сертифікації має жорсткі ліміти звернень до нього (10 за годину). І якщо є помилка, яку ніяк не вдається виявити, то можна дуже швидко впертись у ліміт. Щоб уникнути цієї проблеми, можна скористатись Staging Environment від Let's Encrypt.
Staging Environment - це тестове середовище, що повністю імітує спілкування з центром сертифікації, і видає недовірені сертифікати-пустушки. Однак вона має підвищені ліміти звернення до неї і служить виключно для тестування та налаштування конфігурації сервера:

  • Видача та оновлення сертифіката на 1 домен має ліміт 30 000 на тиждень.
  • Помилка валідації має ліміт 60 разів на годину.

Щоб скористатися тестовим довкіллям, достатньо для certbot використовувати ключ --staging.
Наприклад, можна протестувати видачу сертифіката:

До речі, подивитися, як відбувається оновлення сертифікатів, але без реального оновлення, просто перевірити правильність конфігурації можна командою:

certbot renew --dry-run

А оновити всі сертифікати на сервері можна вручну командою

Після перезавантаження NGINX

Установка сертифіката SSL, TLS від Let's Encrypt

Вводимо команду в консоль Putty:

  • -w /var/www/example.com - шлях до директорії з файлами сайту
  • -d example.com -d www.example.com - прописуємо імена доменів
  • --email [email protected] — ваш email, куди можна буде відновити доступ
  • --agree-tos - згода з ліцензійними вимогами

Якщо домен у кирилиці, треба отримати його Punnycode (наприклад, яндекс.рф має код xn-d1acpjx3f.xn-p1ai) і користуватися цим кодом. Зробити це можна за допомогою Punycode-конвертера.

Якщо все нормально, вам видасть повідомлення про успішне завершення створення сертифіката

Отже, сертифікат встановлений у директорію /etc/letsencrypt/live//

Йдемо налаштовувати NGINX.

Налаштування SSL, TLS в NGINX

Відкриваємо файл конфігурації вашого сайту.
Якщо NGINX налаштований як тут, конфігураційний файл може бути розташований тут:
/etc/nginx/vhosts/example.com.conf

Для зменшення завантаження процесора офіційна документація рекомендує

  • встановити число робочих процесів рівним числу процесорів,
  • дозволити keep-alive з'єднання,
  • включити кеш сесій, що розділяється,
  • вимкнути вбудований кеш сесій
  • і, можливо, збільшити час життя сесії (за замовчуванням 5 хвилин):

Зміни я коментуватиму

# Створюємо окремий server для перенаправлення з http на https server <server_name example.com www.example.com; # Можна вказати будь-які домени та піддомени, дивлячись як ви налаштували сертифікат listen 1.2.3.4:80; #де 1.2.3.4 - айпи вашого сервера rewrite ^(.*) https://$host$1 permanent; # Редирект HTTP/1.1 301 Moved Permanently з http на https ># А це основний сервер з https server < server_name example.com www.example.com; # Копіюємо з верхнього сервера listen 1.2.3.4:443 ssl http2; # замість 1.2.3.4 вставляєте IP свого сервера.http2 включає підтримку протоколу http/2 ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # Сертифікат ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # Ключ # Рекомендації щодо кешування запитів keepalive_timeout 70; # 70 секунд тримаємо з'єднання відкритим keepalive_requests 150; # 150 запитів максимум на 1 з'єднання, після чого закриваємо ssl_session_cache shared:SSL:10m; # Кеш сесій, що розділяється між усіма процесами, на 10 байт з назвою SSL. 1 Мб вміщує близько 4000 сесій ssl_session_timeout 10m; # 10 хвилин – максимальний час життя сесії # А рядки нижче – для посилення безпеки з'єднання ssl_prefer_server_ciphers on; # Вказує, щоб при використанні протоколів SSLv3 та TLS серверні шифри були пріоритетнішими, ніж клієнтські ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA- AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES25 SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES12 8-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA- CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA3 84:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:! aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA; # Типи шифрів ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Дозволені типи протоколів. # Тут решта правил NGINX

Зберегли, перевірили, перезавантажили

nginx -t && service nginx reload

Налаштування SSL, TLS на WordPress

Наприклад, візьмемо сайт на WordPress і налаштуємо на ньому SSL/TLS, зробимо його доступним за HTTPS.
Потрібно буде обов'язково пройтися по списку та внести відповідні зміни:

  1. Переписати у базі даних усі посилання, замінивши http://example.com на https://example.com
    Для цього, ви можете скористатися WP-Cli або спеціальною утилітою Seach Replace DB
  2. Переписати у файлах теми всі посилання, замінивши http:// на https:// або //
  3. Відредагувати wp-config.php , зокрема, перед define('WP_DEBUG', false); додати:

// example.com змінюємо своє ім'я домену define('WP_HOME', 'https://example.com'); define('WP_SITEURL', 'https://example.com'); // Примусова авторизація в адмінці за захищеним протоколом define('FORCE_SSL_ADMIN', true); // Щоб запобігти безкінечному редиректу з http на https if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false) $_SERVER['HTTPS']='on';

Як перенести сайт з HTTP на HTTPS правильно

Я вважаю, що можна не чекати на склеювання http і https, і відразу налаштувати редирект на https, вони все одно склеяться, але далі наведу рекомендації, які дають фахівці з пошукового просування

Якщо ви перекладаєте існуючий проіндексований сайт на SSL, то спочатку рекомендується, щоб Yandex склеїв http та https версії сайту. Для цього, ви повинні спочатку налаштувати сайт так, щоб він був доступний і http, і https вірно, а потім прописати в robots.txt потрібну адресу в директиві Hosts.

Не забудьте додати нову версію сайту HTTPS в Яндекс Вебмайстер та Google Webmasters.

Ось, скажімо, приклад файлу robots.txt для сайту sheensay.ru

User-agent: Yandex Disallow: Host: https://sheensay.ru User-agent: * Disallow: Sitemap: https://sheensay.ru/sitemap.xml

Далі, рекомендується, щоб усі внутрішні посилання були відносними або починалися з протоколу https:// . У всіх зовнішніх JavaScript скриптів, посилань, вставлених картинок, аудіо- та відеоплеєрів, та інших зовнішніх об'єктів протоколи http:// замінюються на абсолютні https:// або відносні // .
Наведу приклад:

  • НЕПРАВИЛЬНО:
  • ПРАВИЛЬНО:
  • ПРАВИЛЬНО:

Далі, перевіряємо секцію head, шукаємо теги та , і стежимо, щоб адреси в них починалися з https://
Таким чином, ви досягнете більш швидкого склеювання різних версій сайту в одну.

Далі, дочекавшись, коли Яндекс все склеїть правильно, можна налаштувати 301 редирект з http на https

Як налаштувати 301 редирект з HTTP на HTTPS

Для NGINX ми налаштовували редирект вище, тому якщо редирект налаштували в ньому, в Apache нічого не змінюємо. Але, наприклад, покажу блок, відповідальний за нього

301 редирект з HTTP на HTTPS в NGINX

Тут потрібно вказати 2 блоки server для http (там ми налаштовуємо редирект) і для https

301 редирект з HTTP на HTTPS в .htaccess (Apache)

Якщо у Вас основний сервер Apache, у його конфігураційному файлі (apache.conf) або в .htaccess у корені сайту прописуємо

RewriteEngine On RewriteBase / RewriteCond % !=1 [NC] RewriteRule ^(.*) https://%/$1 [L,R=301]
RewriteEngine On RewriteCond % !^443$ RewriteRule .* https://%% [R=301,L]

Ця конструкція відловлює всі запити до портів, відмінних від 443 (а саме на 443 порту сидить SSL), і редиректит на потрібну версію сайту з HTTPS.

Якщо у вас у фронтенді NGINX, то редирект у .htaccess може і не спрацювати. У такому разі рекомендую скористатися редиректом у WordPress.

301 редирект з HTTP на HTTPS у WordPress

Щоб зробити 301 редирект на https в wordpress, достатньо знайти в корені сайту wp-config.php і прописати там у будь-якому місці (якщо ще не прописано, example.com змінюєте свій домен):

define( 'WP_HOME', 'https://example.com'); define( 'WP_SITEURL', 'https://example.com');

У більшості ситуацій цього достатньо.

Якщо доступу до wp-config.php немає, то є ще один варіант.
Код нижче використовуєте в MU Plugin, також можна створити звичайний плагін (вимагає активації) або вставити у functions.php робочої теми:

Перед увімкненням коду переконайтеся, що сайту вже надано HTTPS: (Налаштування — Загальні)

Як перевірити правильність роботи SSL, TLS

В інтернеті можна знайти безліч сервісів, які допоможуть визначити, як правильно ви встановили SSL та налаштували сайт під нього.
Один із таких сервісів: ssllabs.com

Рекомендую перевіряти правильність встановлення та налаштування сертифіката SSL/TLS за допомогою ssllabs.com

Ви просто вводите адресу сайту і за кілька хвилин отримуєте результати тесту. Наприклад, ось вищий результат тестування (A+) за доменом https://sheensay.ru

Результат тестування SSL/TLS

Як посилити безпеку SSL, TLS

Буває так, що сертифікат встановлений, а тестування sslabs показує не найкращий грейд безпеки.
Щоб досягти заповітного A+, потрібно правильно налаштувати NGINX.
Для цього спочатку запускаємо наступну команду, яка згенерує потрібні ключі для Forward Secrecy (пряма секретність означає, що якщо третя сторона дізнається який-небудь сеансовий ключ, то вона зможе отримати доступ тільки до даних, що захищені цим ключем, не більше) :

openssl dhparam -out /etc/letsencrypt/dhparam.pem 2048

Потім, потрібна присутність наступних записів у конфігурації сервера:

Після всіх маніпуляцій, не забудьте перезавантажити NGINX

service nginx reload

Відео установки та налаштування SSL сертифіката в хостингу Beget

Якщо Ви хочете встановити SSL, TLS сертифікат на сайт, який розташований у Beget, Вам знадобиться наступна відеоінструкція:

Як встановити SSL/TLS, якщо на сервері декілька сайтів

Зазвичай проблеми виникають, коли на сервері вже є 1 сайт на HTTPS, і на цей сервер потрібно перенести інший сайт.
Або ще більш патова ситуація: потрібно перенести сайт на HTTP і зробити його доступним по HTTPS. Проблема виникатиме через те, що на сервері на порту 443 вже є сайт із сертифікатом SSL/TLS, і звернення будуть йти на нього, і certbot не зможе прописати сертифікат сайту, а сайти HTTP будуть недоступні.
Для вирішення цієї проблеми можна згенерувати тимчасовий самопідписаний сертифікат:

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes

Ця команда створить 2 файли в директорії, з якої викликається команда (зазвичай це /root):

  • cert.pem - Це сертифікат SSL/TLS;
  • key.pem - Це ключ до сертифікату.

Самопідписані сертифікати підходять, скоріше, для службових цілей, ніж для використання на робочих сайтах. Справа в тому, що до них немає жодної довіри, вони не забезпечують належного захисту для користувача, і браузери попереджатимуть про це. Але, скажімо, у разі налаштування сервера з кількома сайтами, а також для редиректу з HTTPS на HTTP цілком годяться.

Ще приклад, коли таке рішення стане в нагоді - на CloudFlare, налаштованому на Flexible SSL, плагін Broken Link Checker при скануванні видає помилки доступу до зображень Connection Failed. І тут також допоможуть самопідписані сертифікати на 443 портах сайту.

Ключі прописуєте конфігурації сервера (приклад є нижче). Далі:

  • Якщо сайт потрібний по HTTP, просто робите редирект з HTTPS на HTTP, за аналогією з редиректом на HTTPS, тільки навпаки (приклад далі);
  • Якщо сайт потрібен HTTPS, робите сайт доступним по HTTP, потім отримуєте сертифікат за допомогою certbot, а далі все як за інструкцією вище - редирект на HTTPS, прописування сертифікатів, налаштування URL і так далі.

Приклад, як зробити редирект з HTTPS на HTTP в NGINX

Допустимо, самопідписані сертифікати згенеровані командою вище і розташовуються в каталозі /root/. Тоді, щоб налаштувати редирект з HTTPS на HTTP для нового сайту example.com, ми можемо використовувати наступну конфігурацію (example.com замінюємо на свій домен, 1.2.3.4 - на свій IP-сервер):

SSL certificate problem: certificate has expired

Що робити, якщо при запитах curl вилазить помилка:

curl: (60) SSL certificate problem: certificate has expired
More details here: https://curl.haxx.se/docs/sslcerts.html

Найправильнішим варіантом буде оновлення сертифікатів на сервері. У Linux Debian, Ubuntu це робиться так:

update-ca-certificates --fresh

Ця команда оновлює символічні посилання сертифікатів /etc/ssl/certs .

Якщо це не допомогло, потрібно буде оновити пакети системи.

Спочатку переконайтеся, що пакети безпеки /etc/apt/sources.list виглядають приблизно так:

deb http://security.debian.org/debian-security stretch/updates main contrib non-free deb-src http://security.debian.org/debian-security stretch/updates main contrib non-free

Якщо все гаразд, оновлюємо пакети

apt update && apt upgrade -y

Після оновлення зміни можна перевірити за допомогою команди:

apt-cache policy ca-certificates

Як встановити SSL-з'єднання?

та отримати 30 днів безкоштовно

Реєстрація займає лише одну хвилину!

Посібник з панелі керування послугами >> Безпека та доступ >> Підключення SSL сертифіката та налаштування редиректу з http на https

  • Справжність Якщо Ваш домен має захищене з'єднання та SSL-сертифікат, це є підтвердженням того, що сайт дійсно є справжнім. Це підвищує довіру до сайту та репутацію
  • Цілісність даних Протокол HTTPS - гарантія того, що всі дані, передані користувачеві, є цілісними. Наприклад, власник Wi-Fi мережі може вставляти на сайт "ліву" рекламу або змінювати зовнішній вигляд сайту з метою економії трафіку. Але якщо на сайті є HTTPS, то це гарантує, що сайт не буде змінено
  • Конфіденційність HTTPS захищає комунікацію між сервером та кінцевим користувачем. Якщо захищене з'єднання відсутнє, власнику точки доступу стають доступні приватні дані користувача

Перед тим як створити редирект із HTTP на HTTPS, необхідно провести підготовку сайту. Для цього потрібно насамперед встановити SSL-сертифікат. Це можна легко зробити з панелі керування сайтом - вкладка Сайти

Напроти поля з доменним ім'ям натисніть «SSL→https». Відкриється модальне вікно, в якому ви вибираєте домен (або піддомен), який хочете захистити. Далі натискаєте "Замовити сертифікат".Протягом 10-15 хвилин Вам буде автоматично підключено SSL-сертифікат.

Друге, що Вам може знадобитися, це зробити всі внутрішні посилання на сайт відносними. Тобто необхідно прибрати на початку посилань символи "http://" або додати до вказаних символів "s", щоб вони вели на версію сайту з протоколом безпеки HTTPS. Те саме стосується картинок, файлів, відео, аудіо, зовнішніх скриптів (віджетів, бібліотек тощо). Щоб не робити це вручну, можна попросити свого програміста або скористатися одним із численних сервісів для аналізу сайтів.

Змішаний вміст https: як виправити блокування змішаного контенту?

Іноді виникає така ситуація: Ви замовили та встановили SSL-сертифікат. Все зробили правильно, але при спробі перейти на Ваш сайт браузер видає попередження: «Не вдалося завантажити сайт, заблоковано завантаження змішаного активного вмісту».

Або, як варіант, веб-сайт завантажується, але замість закритого замка в адресному рядку браузер показує жовтий трикутник (або відкритий замочок) і повідомляє, що з'єднання зашифроване лише частково. Причиною цих проблем є змішаний вміст або змішаний контент (в англійському варіанті - mixed content) на Вашому сайті.

Що ж є змішаний контент? І, найголовніше, як його позбутися?

Наприклад розглянемо браузер Firefox і Yandex:

Зверніть увагу на повідомлення, яке виводить вікно браузера Firefox: "Частини цієї сторінки (такі як зображення) не захищені". Це говорить про те, що навіть при переході сайту на безпечний протокол HTTPS є можливість того, що Ваші користувачі побачать такі попередження.

Це стосується також усіх форм. Наприклад, якщо дані згодні (від англ.submit) на сторінку з протоколом HTTP також буде видаватися попередження для користувача. Тому необхідно уважно переглянути сторінки Вашого сайту на відсутність будь-яких елементів з посиланням на протокол HTTP.

У Yandex-браузері Ви побачите дещо інші позначення. На верхній картинці іконка закритого замку говорить про те, що все гаразд. На нижній - іконка відкритого замку свідчить про присутність на сторінці елементів із посиланнями на небезпечне з'єднання

Останньою дією є автоматична переадресація користувачів з HTTP на безпечний протокол HTTPS. Для цього необхідно в будь-якому вбудованому в панель керування редакторі відкрити файл .htaccess, який розташований у кореневій директорії домену (якщо файлу немає, його необхідно створити).

Існує кілька варіантів реалізації редиректу. Почніть з першого та протестуйте, відкривши сайт у будь-якому браузері за протоколом HTTP. Якщо вона не спрацює, спробуйте наступний за списком.

RewriteEngine On RewriteCond % !^443$ RewriteRule .* https://%% [R=301,L]
RewriteEngine On RewriteCond % =off RewriteRule (.*) https://%% [QSA,L]
RewriteEngine On RewriteCond % off RewriteCond % !https RewriteRule ^(.*)$ https://%% [L,R=301]

Якщо Ваш сайт використовує якусь CMS, то є можливість реалізувати редирект через адмінку самої системи управління сайтом, без залучення файлу .htaccess. Уточнити цей момент Вам допоможе документація CMS, що використовується. Але, наприклад, ми розглянемо OpenCart і Wordpress:

Все, що потрібно зробити, це відкрити конфігураційні файли (config.php) і прописати правило:

// HTTPS define('HTTPS_SERVER', 'https://yourdomain.com/');

Щоб зробити те саме в WordPress, в адміністративній панелі сайту перейдіть в розділ «Налаштування» > «Загальні», в полях "Адреса WordPress" та "Адреса сайту" протокол "http" змінюється на "https". У конфігураційному файлі (wp-config.php) додається наступний рядок:

define('FORCE_SSL_ADMIN', true);

Якщо виникнуть будь-які питання щодо міграції Вашого сайту на HTTPS, можете завжди звернутися до нашої технічної підтримки

Що таке протокол HTTPS та принципи його роботи

У статті ми розповімо, що означає HTTPS на адресі сайту (розшифрування HTTPS), як працює цей протокол і навіщо взагалі переходити на безпечне з'єднання.

Що таке захищене з'єднання HTTPS

HTTPS (Від англ. HyperText Transfer Protocol Secure) – це безпечний протокол передачі даних, який підтримує шифрування за допомогою криптографічних протоколів SSL та TLS, і є розширеною версією протоколу HTTP. Щоб краще зрозуміти, що означає HTTPS, розберемося з усім по порядку.

Мільйони інтернет-користувачів постійно обмінюються інформацією. Це можуть бути як дружні бесіди, веселі картинки, робочі листування, так і банківські та паспортні дані, номери договорів та інша конфіденційна інформація. Робота всієї всесвітньої павутини заснована на протоколі HTTP. Завдяки ньому користувачі можуть надсилати дані.

Спочатку HTTP (HyperText Transfer Protocol) використовувався лише як протокол передачі гіпертексту (тексту з перехресними посиланнями). Однак пізніше стало зрозуміло, що він чудово підходить для передачі даних між користувачами. Протокол був доопрацьований нових завдань і став використовуватися повсюдно.

Незважаючи на свою функціональність, у HTTP є один дуже важливий недолік ― незахищеність. Дані між користувачами передаються у відкритому вигляді, зловмисник може втрутитися у передачу даних, перехопити їх чи змінити. Щоб захистити дані користувачів, було створено протокол HTTPS.

HTTPS працює завдяки сертифікату SSL/TLS. SSL/TLS-сертифікат ― це цифровий підпис сайту. За її допомогою підтверджується його справжність. Перш ніж встановити захищене з'єднання, браузер запитує цей документ і звертається до центру сертифікації, щоб підтвердити легальність документа. Якщо він дійсний, то браузер вважає цей сайт безпечним і розпочинає обмін даними. Ось звідки взялася і що означає S у HTTPS.

Для захисту інтернет-з'єднання у 90-х роках компанія Netscape створила SSL-сертифікат. Перші версії цього сертифікату мали багато недоліків. За кілька років вийшло три версії SSL. Величезний стрибок у його вдосконаленні відбувся у 1999 році при спільній роботі з компанією Consensus Development. Окрім серйозних доробок, сертифікат отримав нову назву. TLS (що означає захист транспортного рівня). Незважаючи на нову назву, користувачі застосовували звичне поняття SSL. Розробники стали на бік користувачів і не стали акцентувати увагу на найменуванні, тому часто можна побачити подвійну назву цього сертифіката (SSL/TLS) або просто SSL. Однак в офіційній документації використовується абревіатура TLS.

Система HTTPS схожа на провід, що складається з двох шарів: мідна серцевина та оболонка. Мідна серцевина - основна частина дроту, по якій йде струм. Оболонка захищає контакти від зовнішніх впливів. Так, мідна серцевина – це HTTP-протокол, а захисна оболонка – це SSL-сертифікат. Така співпраця створює безпечне з'єднання HTTPS.

Ключі шифрування

Окрім підтвердження справжності сайту, SSL-сертифікат шифрує дані. Після того, як браузер переконався в справжності сайту, починається обмін шифрами. Шифрування HTTPS відбувається за допомогою симетричного та асиметричного ключа. Ось що це означає:

  • Асиметричний ключ - кожна сторона має два ключі: публічний та приватний. Публічний ключ доступний будь-кому. Приватний відомий лише власнику. Якщо браузер хоче надіслати повідомлення, він знаходить публічний ключ сервера, шифрує повідомлення і відправляє на сервер. Далі сервер розшифровує отримане повідомлення за допомогою приватного ключа. Щоб відповісти користувачеві, сервер робить ті самі дії: пошук публічного ключа співрозмовника, шифрування, надсилання.
  • Симетричний ключ — обидві сторони мають один ключ, за допомогою якого вони передають дані. Між двома сторонами має бути встановлений первинний контакт, щоб браузер і сервер знали, якою мовою спілкуватися.

Щоб встановити HTTPS-з'єднання, браузеру та серверу треба домовитися про симетричний ключ. Для цього спочатку браузер та сервер обмінюються асиметрично зашифрованими повідомленнями, де вказують секретний ключ і далі спілкуються за допомогою симетричного шифрування.

Отже, якою є функція протоколу HTTPS?

  • 1. Шифрування. Інформація передається у зашифрованому вигляді. Завдяки цьому зловмисники не можуть украсти інформацію, якою обмінюються відвідувачі сайту, а також відстежити їхні дії на інших сторінках.
  • 2. Аутентифікація. Відвідувачі впевнені, що переходять на офіційний сайт компанії, а не дублікат, зроблений зловмисником.
  • 3. Збереження даних. Протокол фіксує всі зміни даних.Якщо зловмисник таки намагався зламати захист, про це можна дізнатися зі збережених даних.

Також варто згадати, який порт використовується протоколом HTTPS за промовчанням. HTTPS використовує для підключення 443 порт – його не потрібно додатково налаштовувати

Схема роботи HTTPS

Отже, протокол HTTPS призначений для безпечного з'єднання. Щоб зрозуміти, як встановлюється це з'єднання та як працює HTTPS, розглянемо механізм покроково.

Наприклад візьмемо ситуацію: користувач хоче перейти на сайт Рег.ру, який працює за безпечним протоколом HTTPS.

  • 1. Браузер користувача просить надати SSL-сертифікат.
  • 2. Сайт на HTTPS надсилає сертифікат.
  • 3. Браузер перевіряє справжність сертифіката у центрі сертифікації.
  • 4. Браузер та сайт домовляються про симетричний ключ за допомогою асиметричного шифрування.
  • 5. Браузер та сайт передають зашифровану інформацію.

Як працює HTTPS протокол

Навіщо встановлювати HTTPS

Як ми говорили раніше, головне завдання HTTPS – забезпечення безпеки передачі даних. Однак існує ще кілька причин перейти на захищене з'єднання:

    Відмітка про небезпеку сайту. На даний момент Google та Яндекс хоч і дозволяють користувачам відкривати сайти по HTTP, але вважають їх небезпечними та попереджають про це в адресному рядку браузера. Це може бути напис «Не захищено» або червоний знак оклику. Позначення може відрізнятися залежно від браузера:

Незахищене з'єднання в Яндекс.Браузері

Візуальне позначення привертає увагу користувачів та змушує відмовитися від відвідування сайту, тому є ризик втратити потенційних клієнтів.

  • Довіра. Сайти, які опікуються даними користувачів, викликають довіру з боку клієнтів. Це додає лояльності аудиторії.
  • SEO-оптимізація. Пошукові системи з недовірою ставляться до сайтів, що працюють за протоколом HTTP. Навіть за грамотної SEO-оптимізації можна не досягти бажаних показників.

Сайти не зобов'язані працювати виключно за протоколом HTTPS. Проте захист даних – це важливий елемент сучасної інтернет-комунікації. Коли сайт працює з небезпечним з'єднанням, у браузері може відображатися помилка «Підключення не захищене». Якщо ви користувач і зустріли таке повідомлення на просторах інтернету, краще залиште небезпечний ресурс. Як виправити помилку "Ваше підключення не захищене", якщо ви власник сайту? Не варто нехтувати безпекою клієнтів, які довіряють організаціям свої особисті дані. Замовте SSL-сертифікат та переведіть сайт на безпечне з'єднання HTTPS. Якщо ви вже виконували ці налаштування раніше, але на сайті все одно повідомлення про помилку, дотримуйтесь інструкцій.

Чи допомогла вам стаття?

Дякую за оцінку. Раді допомогти 😊

Схожі статті

  • Яка головна передача встановлюється на ваз 2107
  • Яке поєднання клавіш запустити презентацію з поточного слайду
  • Як зробити поєднання з роботом пилососом Xiaomi
  • Поєднання витяжки та природної вентиляції на кухні
  • Як виконати мостове з'єднання з ноутбуком на ПК
  • З'єднання поліпропіленових труб у домашніх умовах
  • Коричневий з сірим поєднання
  • Як вирізати файл поєднання клавіш
  • Недавні статті

  • Як бродить зернова брага
  • Що робити якщо не засмагаєш на сонці чому засмага погано лягає на шкіру або перестає прилипати
  • Як швидко зняти гель лак без апарату
  • Як робиться Каті голови
  • Яка гребінець краще для об'єму
  • Чим роблять м'яку покрівлю
  • Чи можна залишати крем для обличчя на ніч
  • Де знаходиться датчик селектора
  • географія нашої діяльності
    вулиця Драгоманова, 27
    вул. Курчатова 1Б
    вул. Міцкевича 130
    вул. Лабунського, 1
    вул. Макарова-Пржевальського
    вул. Толстого 10
    вул. Грушевського 28
    вул. Перший промінь (Черняхівського)
    напишіть нам

    сообщение успешно отправлено
    x