Неможливо встановити безпечне з'єднання у браузері – що робити? Як HTTPS забезпечує безпеку з'єднання: що повинен знати кожен Web-розробник

Якось при відвідуванні одного з моїх блогів початку з'являється помилка антивірусу Касперського. Неможливо гарантувати справжність домену, з яким встановлюється зашифроване з'єднання.“. В інтернеті вона вже зустрічалася мені раніше і я знаю наскільки сильно це вікно може дратувати - користувачеві потрібно зробити 2-3 кліки і витратити 5-10 секунд часу щоб потрапити на сайт. Якби я не був на 100% впевнений, що мені потрібно туди зайти (а переходив би вперше з пошуку), то з великою ймовірністю просто закрив би сторінку.

Можливо, це не так серйозно, як, але навіть враховуючи той факт, що Касперскій встановлений не у всіх, втрачати потенційних відвідувачів не хотілося. Загалом, я почав розбиратися із проблемою. Для початку покажу, як саме вона виглядає:

Попередження з'являється відразу при вході на веб-ресурс у нижньому правому кутку. Користувачеві пропонується розірвати «недостовірну зв'язок» заради своєї або перейти до сайту на власний страх і ризик.

Практично всі причини появи помилки автентичності доменного імені пов'язані з якимись проблемами сертифіката (цифровим підписом зашифрованого HTTPS-з'єднання). Сертифікат може бути:

  • відкликаний користувачем;
  • видано не зовсім легально;
  • не призначений для підтвердження справжності;
  • мати порушення у структурі чи ланцюжку сертифікатів;
  • містити не той домен, на який встановлено.

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

Помилка автентичності домену на своєму сайті

Так як за визначенням ситуація виникає при косяках в сертифікаті захищеного протоколу, вам потрібно визначити що конкретно з ним не так (можливо, звернувшись до компанії, де його замовляли). У конкретному випадку причина проблеми була зовсім зрозуміла, т.к. у блозі НЕ встановлено протокол HTTPS!

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

Я вирішив спробувати підставити замість звичайного захищений протокол https://design-mania.ru, і виявилося, що сайт відкривається і за другою адресою теж. Цілком ймовірно, що антивірус діяв за такою ж логікою, а оскільки в блозі немає ніякого сертифікату, це викликало помилку.

Загалом, звернувся в тех.підтримку свого хостера FastVPS, де мені прояснили ситуацію технічно грамотною мовою:

Тому якщо у вас почала з'являється подібна помилка на власному сайті, сміливо пишіть хостеру для з'ясування причин та встановлення відповідних налаштувань. Після внесення змін не забудьте очистити кеш та cookies браузера.

Відключення автентифікації домену в Kaspersky

Якщо проблема знаходиться на сторонньому сервері, Постійні спрацьовування попередження антивірусу Касперського і витрата часу на їх обробку також може дратувати. Тут є два варіанти вирішення:

  • повністю відключити перевірку у програмі;
  • додати URL певного проекту у винятки.

Згадується одразу схожа — мабуть, «Каспер» намагається перестрахуватись у будь-якій незрозумілій ситуації.

Щоб вимкнути аналіз захищених з'єднань:

1. Відкриваєте основне вікно програми Kaspersky Internet Security(в інтерфейсі інших, на жаль, не орієнтуюсь). Далі клацаєте по іконці шестерні (Налаштування), де слід вибрати пункт "Додатково" - "Мережа".

2. Потім знайдіть опцію «Перевірка захищених з'єднань» та вибираєте в ній перший пункт – «не перевіряти».

3. З'явиться спливаюче вікно з попередженням, що рівень знизиться - погоджуєтесь з цим.

Щоб створити виняток для певного сайту:

1. Спочатку виконуємо аналогічні діїпопередньому методу: заходимо в налаштування, де у вкладці Додатково вибираємо Мережа.

2. Для опції перевірки з'єднань трохи нижче є лінк «Налаштувати винятки».

У принципі на це всім. Більше інформаціїзнайдете в онлайн довідці антивірусу Якщо після всіх маніпуляцій проблема не зникла, залишається 2 шляхи: просто забити або звернутися на тех. підтримку Касперського. Помилка неможливості гарантування автентичності домену теоретично може з'являтися і під час використання іншого антивірусного софту. Думаю, в такому разі алгоритм аналогічний — знаходите налаштування де відключити перевірку сертифікатів на сайтах або створюєте винятки з правил.

P.S. Ще одне цікаве чтиво - детальний чек-лист про те, як і коли варто робити SEO аналіз тексту. Враховуючи те, яку важливу рользараз грає контент, це корисно знати.

Ми випустили нову книгу«Контент-маркетинг у соціальних мережах: Як засісти в голову передплатників і закохати їх у свій бренд»

Підписатися

Світ збожеволів на інтернет-безпеці. Якщо ви в тренді і переписуєтеся виключно в "Телеграмі", то почитайте про те, як встановити на сайт захищеного з'єднання. Він стане в нагоді в будь-якому випадку, а якщо ви інтернет-магазин, то без нього взагалі не можна буде обійтися. Принагідно розповімо про сертифікати: що це таке і для чого вони потрібні.

Що таке HTTPS

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

Для чого потрібний сертифікат SSL

Він формує унікальний цифровий підпис сайту, який допомагає захистити з'єднання. Без сертифіката SSL отримати протокол HTTPS не вийде, як не намагайся. У ньому міститься:

  • домен сайту;
  • повна юридична назва компанії-власника;
  • фізична адреса компанії;
  • термін дії сертифіката;
  • реквізити розробника SSL

Сертифікат знадобиться і для підключення будь-якої платіжної системи, Наприклад «Яндекс.Грошей». Логіка проста – ніхто не дозволить вам ризикувати чужими грошима.

Як вибрати SSL-сертифікат

Вони поділяються на два типи, залежно від ступеня захисту та .

Domain Validation SSL

Найпростіший варіант. Запрацює після того, як ви підтвердите володіння доменом. Зробити це можна трьома способами:

  • Через електронну пошту. Вам на пошту прийде листз інструкцією щодо верифікації. Як адреса відправки вибирається або пошта з Whois доменуабо ящики адміна або вебмайстра.
  • Через запис DNS. Якщо у вас налаштований сервер електронної пошти, створіть спеціальний запис DNS. По ній система і підтвердить, що ви справді власник сайту. Метод автоматизований і підходить тим, у кого пошта Whois прихована у налаштуваннях.
  • Через хеш-файл. Розмістіть спеціальний.txt файл у себе на сервері, щоб центр сертифікації зміг встановити його наявність.

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

Business Validation

Цей вид сертифіката SSL надійніший, тому що ви підтверджуєте факт зв'язку компанії з сайтом. Для цього потрібно відправити до верифікаційного центру кілька документів та прийняти дзвінок на корпоративний номер. Business Validation-сертифікати поділяються на 3 види:

  • Extended Validation SSL. Це сертифікати із розширеною перевіркою. Вони потрібні всім, хто працює з великим обсягом грошей: банкам, великим інтернет-магазинам, фінансовим компаніям, платіжним системам
  • Wildcard SSL. Такий сертифікат захищає і сам сайт, і його піддомен. Причому їх може бути будь-яка кількість, а вони можуть розташовуватися на різних серверах. Обов'язковий, якщо ви використовуєте піддомени з різними регіональними прив'язками або різними проектами.
  • SAN SSl. Головна перевага цього сертифікату – підтримка альтернативних доменних імен: і зовнішніх, і внутрішніх.

Чи можна встановити на свій сайт безкоштовний SSL-сертифікат?

Так. Більшість таких продуктів є платними, але є й варіанти, за які не доведеться віддавати гроші. Це базові сертифікати з валідацією домену. Вони не дозволять прикрутити до ресурсу онлайн-касу, але захистити з'єднання користувача із сервером зможуть. Такі SSL підійдуть невеликим інформаційним сайтам чи офлайн-бізнесам. Приклад – базовий сертифікат StartSSL.

Встановлення сертифіката SSL

Спочатку потрібно згенерувати запит CSRотримання сертифіката. У ньому міститься вся інформація про господаря домену та відкритий ключ. Більшість постачальників SSL дозволяють це зробити в процесі замовлення сертифіката, але згенерувати запит можна і на стороні веб-сервера.

У процесі генерації ключа CSR потрібно вказати:

  • Ім'я сервера: "site.com" або "*.site.com", якщо отримуєте WIldcard сертифікат. Зірочка означає будь-яку кількість будь-яких символів перед точкою.
  • Код країни: RU, UA, KZ і таке інше.
  • Область, наприклад, Saratov Region.
  • Місто.
  • Повна назва організації чи ім'я власника сайту.

Запит CSR надсилається до центру верифікації. На виході ви отримуєте сертифікат SSL та файл із приватним ключем, який не можна втрачати та викладати у відкритий доступ.

Після цього необхідно встановити сертифікат на веб-сервер. Розглянемо випадки з Apache та nginx.

Apache

Щоб це зробити, потрібно завантажити на сервер усі сертифікати: і основні, і проміжні. Насамперед потрібно останній у директорію /usr/local/ssl/crt (використовується за умовчанням, у вашому випадку може відрізнятися). У ній зберігатимуться всі сертифікати.

Після цього скачайте основний сертифікат, відкрийте його у будь-якому текстовому редакторіі повністю скопіюйте вміст разом із рядками «BEGIN» та «END».

У директорії /ssl/crt/ створіть файл vashsite.crt і вставте вміст сертифіката.

Файл приватного ключа перемістіть до директорії /usr/local/ssl/private/

У файлі VirtualHost додайте рядки:

SSLEngine on

SSLCertificateKeyFile /usr/local/ssl/private/private.key

SSLCertificateFile /usr/local/ssl/crt/vashsite.crt

SSLCertificateChainFile /usr/local/ssl/crt/intermediate.crt

Вказувати потрібно дійсні шляхи до файлів. Збережіть зміни та перезапустіть сервер.

nginx

Тут процес встановлення SSL сертифіката трохи відрізняється. Спочатку потрібно об'єднати кореневий, проміжний та SSL-сертифікати в один. Для цього створіть файл vashsite.crt та вставте туди вміст сертифікатів разом із рядками «BEGIN» та «END» (порядок: SSL, проміжний, кореневий). Порожніх рядківбути не повинно.

Майже те саме потрібно зробити і з приватним ключем - створити файл vashsite.key і перенести вміст ключа, завантаженого з сайту постачальника.

Обидва файли (vashsite.crt та vashsite.key) помістіть у директорію /etc/ssl/ (вона використовується за умовчанням, але може відрізнятися).

У файлі конфігурацій відредагуйте VirtualHost. Додайте:

server(
listen 443;
ssl on;

ssl_certificate /etc/ssl/vashsite.crt;
ssl_certificate_key /etc/ssl/vashsite.key;
server_name vashsite.com;

Якщо директорія із сертифікатом та ключем відрізняється від дефолтної, поміняйте її.

Тепер збережіть зміни та перезапустіть nginx.

Як отримати робоче HTTPS-з'єднання

Після встановлення сертифікатів SSL сайт стане доступним за двома адресами: http://vashsite.com та https://vashsite.com. Вам потрібно залишити лише останній. Для цього налаштуйте файл robots.txt і зробіть 301-редирект зі старого сайту.

У "robots" потрібно оновити host. Приклад: Host: http://vashsite.com. Для налаштування редиректу потрібно додати файл.htacsess рядки:

RewriteCond %(SERVER_PORT) !^443$

RewriteRule ^(.*)$ https://vashsite.com/$1 .

Тепер залишилося повідомити про зміни пошукових систем. У «Вебмайстрі» «Яндекса» додайте сторінку з https та вкажіть її як головне для старого сайту.

Підсумки

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

Сучасні браузери Google Chrome, Яндекс, Опера, Firefox та багато інших добре справляються зі своїми основними завданнями, а розробники цього ПЗ приділяють особливу увагубезпеки. Іноді це завдає користувачам певних незручностей.

Чому виникає помилка

Причин, з яких у браузерах може з'являтися подібна помилка, кілька, серед яких виділяються такі:

  • Проблема з сертифікатами SSL. Сайти повинні надавати їх браузерам, а коли цього не відбувається, браузер «не пускає» користувача на сайт і видає згадану помилку.
  • Браузер перевіряє з'єднання, а коли в ланцюжку є вузол DNS і його з певних причин не вдається перевірити, підключення блокується. Аналогічна ситуація виникає при VPN-з'єднаннях або з Proxy-серверами.
  • Браузери обривають з'єднання, якщо на сайті немає сертифіката https та потрібно вводити особисті дані.

Як уникнути помилки «Неможливо встановити безпечне з'єднання»?

  • Як очистити кеш у браузері - інструкції для всіх браузерів
  • Недостатньо прав для видалення, зверніться до адміністратора – що робити?
  • Якщо вам потрібно потрапити на певний сайт, але це неможливо через помилку «Неможливо встановити безпечне з'єднання», Можна її обійти. Зазначимо, що тим самим ви наразите комп'ютер на небезпеку, тому робіть це лише в крайніх випадках. Розглянемо алгоритм дій на прикладі Яндекс.Браузера:

    • Відкрийте налаштування браузера.
    • Перейдіть внизу у вкладку «Показати додаткові параметри».
    • Знайдіть меню https/ssl та натисніть кнопку «Додатково».
    • Щоб уникнути захисту, що призводить до помилки, зніміть галочку з пунктів «Перевірка автентичності сервера» та «Довірений ДНС-сервер».

    Доповнення браузера

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

    Інші способи усунення помилки

    Виникає помилка «Неможливо встановити безпечне з'єднання» при відкритті окремих сайтів може і з інших причин. Якщо вимкнення перевірки сертифікатів не допомогло, спробуйте зробити таке:

    • Оновити або перевстановити браузер.
    • Встановити правильну дату, часовий пояс та час на комп'ютері.
    • Спробувати перейти на сайт з пошукової системи, а не через збережену закладку.
    • Іноді проблема у вірусах на жорсткому диску, яких допоможе позбутися антивірусна програма.

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

    У наш час досить важко знайти людину, яка б не користувалася інтернетом.

    Багато користувачів проводять на його просторах досить велика кількістьчасу. Тому, як ніколи затребувано.

    Але що ж робити, якщо всі плани порушує попередження, що раптово з'являється? ваше з'єднання не захищене.

    У цій статті ми розглянемо, чому виникає дана помилкав різних браузерахі що слід зробити у разі її появи.

    Зміст:

    Насамперед розглянемо виникнення цієї проблеми під час використання.

    Значення подібного повідомлення

    Найчастіше таке повідомлення виникає під час відвідування захищених сайтів. Такі сайти при взаємодії з браузером FireFoxзадіяють спеціальний спосіб шифрування - #encryption. Це робиться для того, щоб унеможливити перегляд переданої інформаціїзловмисниками.

    Щоб зрозуміти, що ви заходите саме на такий сайт - зверніть увагу на рядок відображення адреси сторінки, що відвідується. У рядку статусу ( #status_Bar) захищеного сайту буде відображатися значок у вигляді закритого замку. Також він відображатиметься і в адресному рядку (#lokation_bar).

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

    Подібні сайти можуть містити не лише захищену інформацію, а й незахищену, до якої всі мають вільний доступ.

    У випадку, якщо інформація сайту незахищена - FireFox відображатиме в рядку статусу перекреслений косою лінією значок замка. Також буде відсутнє доменне ім'я в адресному рядку та рядку статусу. Якщо ви звертаєте увагу на таку інформацію - відразу ж зможете зрозуміти, що відвідуваний сайт має частковий захист.

    Для її вирішення потрібно повторно встановити антивірус або відключити в його налаштуваннях перехоплення захищених з'єднань.

    Наприклад, якщо ви використовуєте для захисту системи, відкрийте «Налаштування» і перейдіть на вкладку « Активний захист» .

    Там вам знадобиться натиснути на кнопку «Налаштувати» , розташовану поруч із веб-щитом.

    У вікні зніміть галочку виділення з рядка "Включити HTTPS-сканування". Насамкінець необхідно підтвердити проведені зміни в налаштуваннях натисканням на кнопку «Ок» .

    Якщо ви користуєтеся таким продуктом, як вам знадобиться виконати наступні дії:

    • відкрити вікно з налаштуваннями антивірусника;
    • у нижній лівій частині цього вікна натисніть кнопку «Налаштування» ;
    • скористайтесь пунктом «Додатково», щоб перейти на вкладку «Мережа»;
    • зніміть виділення з рядка меню "Сканувати зашифровані з'єднання";
    • виділіть галочкою параметр "Не сканувати зашифровані з'єднання";
    • підтвердіть зміну, натиснувши кнопку «Ок» .

    В інтернеті не важко знайти необхідну інформаціюта для інших антивірусних продуктів.

    Відсутність довіри до сертифіката ваш браузер може відобразити не лише на маловідомих сайтах, але й на таких гігантах, як Google. Найчастіше з подібним можуть стикатися власники. Це пов'язано з тим, що активовано параметри сім'ї Майкрософт, які знаходяться в облікових записах користувачів.

    Наступним кроком буде видалення всіх членів сім'ї, використовуючи функцію «Видалити із сім'ї»на вкладці додаткових параметрів.

    На закінчення слід і самому вийти з сім'ї, скориставшись однойменним параметром.

    Четверта помилка

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

    Подібні сертифікати призначені для захисту від прослуховування, однак не повідомляють жодної інформації про одержувача.

    Найчастіше цим користуються непублічні сайти, тому ви цілком зможете обійти це попередження.

    П'ята помилка

    Полягає в тому, що сертифікат, що надається вам, належить зовсім іншому Інтернет-ресурсу.

    Така проблема виникає досить часто і в першу чергу через те, що сертифікат, що видається, є дійсним для якоїсь однієї частини відвідуваного сайту.

    Наприклад, ви відвідали https://example.comі отримали попередження про таку помилку, а сертифікат було видано для https://example.com. У разі переходу по останньому – попередження не виникнуть.

    Сховище сертифікатів

    Виникнення подібних повідомленьможе відбуватися і через пошкодження файлу cert9.dbзберігає всі ваші сертифікати.

    У цьому випадку не відкриваючи FireFox, видаліть вказаний вище файл, щоб при наступному запуску відбулося його відновлення.

    Для цього виконайте такі дії:

    • відкрийте меню та виберіть пункт «Довідка»;
    • перейдіть на вкладку «Інформація для вирішення проблем»;
    • відкрийте папку профілю, яка знаходиться в розділі «Відомості про програму»;
    • знову відкрийте меню та виберіть пункт «Вихід»;
    • виділіть файл dbі видаліть його;
    • здійсніть перезавантаження браузера.
    • Переклад

    Як же працює HTTPS? Це питання, над яким я бився кілька днів у своєму робочому проекті.

    Будучи Web-розробником, я розумів, що використання HTTPS для захисту даних користувача – це дуже і дуже хороша ідеяале у мене ніколи не було кристального розуміння, як HTTPS насправді влаштований.

    Як дані захищаються? Як клієнт і сервер можуть встановити безпечне з'єднання, якщо хтось уже прослуховує їхній канал? Що таке сертифікат безпеки і чому я маю комусь платити, щоб отримати його?

    Трубопровід

    Перед тим, як ми поринемо у те, як це працює, давайте коротко поговоримо про те, чому так важливо захищати Інтернет-з'єднання і від чого захищає HTTPS.

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

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

    Як правило, запити передаються за допомогою звичайного HTTP, в якому і запит клієнта, і відповідь сервера передаються в відкритому вигляді. І є безліч вагомих аргументів, чому HTTP не використовує стандартне шифрування:

    Для цього потрібно більше обчислювальних потужностей
    Передається більше даних
    Не можна використовувати кешування

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

    Transport Layer Security (TLS)

    Зараз ми збираємося поринути у світ криптографії, але нам не знадобиться для цього якогось особливого досвіду – ми розглянемо лише самі загальні питання. Отже, криптографія дозволяє захистити з'єднання від потенційних зловмисників, які хочуть вплинути на з'єднання або просто прослуховувати його.

    TLS - спадкоємець SSL - це такий протокол, що найчастіше застосовується для забезпечення безпечного HTTP з'єднання(Так званого HTTPS). TLS розташований на рівень нижче протоколу HTTPу моделі OSI. Пояснюючи на пальцях, це означає, що в процесі виконання запиту спочатку відбуваються всі "речі", пов'язані з TLS-з'єднанням і вже потім все, що пов'язано з HTTP-з'єднанням.

    TLS – гібридна криптографічна система. Це означає, що вона використовує кілька криптографічних підходів, які ми розглянемо далі:

    1) Асиметричне шифрування (криптосистема з відкритим ключем) для генерації загального секретного ключа та аутентифікації (тобто посвідчення в тому, що ви – той, за кого себе видаєте).
    2) Симетричне шифрування, що використовує секретний ключдля подальшого шифрування запитів та відповідей.

    Криптосистема з відкритим ключем

    Криптосистема з відкритим ключем – це різновид криптографічної системи, коли кожна сторона має і відкритий, і закритий ключ, математично пов'язані між собою Відкритий ключ використовується для шифрування тексту повідомлення у “тарабарщину”, тоді як закритий ключ використовується для дешифрування та отримання вихідного тексту.

    З того часу, як повідомлення було зашифровано за допомогою відкритого ключа, воно може бути розшифроване тільки відповідним закритим ключем. Жоден із ключів не може виконувати обидві функції. Відкритий ключ публікується в відкритому доступібез ризику піддати систему загроз, але закритий ключ не повинен потрапити до будь-кого, який не має права на дешифрування даних. Отже, ми маємо ключі – відкритий та закритий. Однією з найбільш вражаючих переваг асиметричного шифрування є те, що дві сторони, раніше зовсім не знаючі другдруга, можуть встановити захищене з'єднання, спочатку обмінюючись даними відкритого, незахищеного з'єднання.
    Клієнт і сервер використовують власні закриті ключі (кожен – свій) і опублікований відкритий ключ для створення спільного секретного ключа на сесію.

    Це означає, що якщо хтось знаходиться між клієнтом та сервером і спостерігає за з'єднанням – він все одно не зможе дізнатися ні закритий ключ клієнта, ні закритий ключ сервера, ні секретний ключ сесії.

    Як це можливо? Математика!

    Алгоритм Діффі - Хеллмана

    Одним з найбільш поширених підходів є алгоритм обміну ключами Діффі - Хеллмана (DH). Цей алгоритм дозволяє клієнту та серверу домовитися з приводу загального секретного ключа без необхідності передачі секретного ключа по з'єднанню. Таким чином, зловмисники, які прослуховують канал, не зможу визначити секретний ключ, навіть якщо вони перехоплюватимуть усі пакети даних без винятку.

    Як тільки відбувся обмін ключами DH-алгоритмом, отриманий секретний ключ може використовуватися для шифрування подальшого з'єднання в рамках даної сесії, використовуючи набагато простіше симетричне шифрування.

    Трохи математики.

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

    Нехай Аліса та Боб – дві сторони, які здійснюють обмін ключами за DH-алгоритмом. Спочатку вони домовляються про деяку підставу root(зазвичай невеликій кількості, такій як 2,3 або 5) і про дуже велике простому числі prime(більше ніж 300 цифр). Обидва значення пересилаються у відкритому вигляді каналом зв'язку, без загрози компрометувати з'єднання.

    Нагадаємо, що і Аліса, і Боб мають власні закриті ключі (з більш ніж 100 цифр), які ніколи не передаються каналами зв'язку.

    По каналу зв'язку передається суміш mixture, отримана із закритих ключів, а також значень primeі root.

    Таким чином:
    Alice's mixture = (root ^ Alice's Secret) % prime
    Bob's mixture = (root ^ Bob's Secret) % prime
    де % - залишок від розподілу

    Таким чином, Аліса створює свою суміш mixture на основі затверджених значень констант ( rootі prime), Боб робить те саме. Як тільки вони набули значення mixtureодин одного, вони виробляють додаткові математичні операціїдля одержання закритого ключа сесії. А саме:

    Обчислення Аліси
    (Bob's mixture ^ Alice's Secret) % prime

    Обчислення Боба
    (Alice's mixture ^ Bob's Secret) % prime

    Результатом цих операцій є те саме число, як для Аліси, так і для Боба, і це число і стає закритим ключем на дану сесію. Зверніть увагу, що жодна зі сторін не повинна була пересилати свій закритий ключ каналу зв'язку, і отриманий секретний ключ так само не передавався по відкритому з'єднанню. Чудово!

    Для тих, хто менше підкований у математичному плані, Wikipedia дає прекрасну картинку, яка пояснює даний процесна прикладі змішування кольорів:

    Зверніть увагу як початковий колір (жовтий) у результаті перетворюється на той самий “змішаний” колір і в Боба, і в Аліси. Єдине, що передається по відкритому каналузв'язку так це наполовину змішані кольори, насправді безглузді для будь-якого каналу зв'язку, що прослуховує.

    Симетричне шифрування

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

    Використовуючи секретний ключ, отриманий раніше, а також домовившись щодо режиму шифрування, клієнт та сервер можуть безпечно обмінюватися даними, шифруючи та дешифруючи повідомлення, отримані один від одного з використанням секретного ключа. Зловмисник, що підключився до каналу, бачитиме лише "сміття", що гуляє по мережі взад-вперед.

    Аутентифікація

    Алгоритм Діффі-Хеллмана дозволяє двом сторонам отримати закритий секретний ключ. Але звідки обидві сторони можуть упевнені, що розмовляють справді одна з одною? Ми ще не говорили про аутентифікацію.

    Що якщо я зателефоную своєму приятелю, ми здійснимо DH-обмін ключами, але раптом виявиться, що мій дзвінок був перехоплений і насправді я спілкувався з кимось іншим? Я, як і раніше, зможу безпечно спілкуватися з цією людиною – ніхто більше не зможе нас прослухати – але це буде зовсім не той, з ким я думаю, що спілкуюся. Це не надто безпечно!

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

    Але, насправді, що це за сертифікат, і як він надає нам безпеку?

    Сертифікати

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

    По суті, сертифікати пов'язують доменні іменаз певним громадським ключем. Це запобігає можливості того, що зловмисник надасть свій публічний ключвидаючи себе за сервер, до якого звертається клієнт.

    У прикладі з наведеним вище телефоном, хакер може спробувати пред'явити мені свій публічний ключ, видаючи себе за мого друга – але підпис на його сертифікаті не належатиме тому, кому я довіряю.

    Щоб сертифікату довіряв будь-який веб-браузер, він має бути підписаний акредитованим центром, що засвідчує (центром сертифікації, Certificate Authority, CA). CA – це компанії, які виконують ручну перевірку, що особа, яка намагається отримати сертифікат, задовольняє наступним двом умовам:

    1. є реально існуючим;
    2. має доступ до домену, сертифікат якого він намагається отримати.

    Як тільки CA засвідчується в тому, що заявник – реальний і він реально контролює домен, CA підписує сертифікат для цього сайту, по суті, встановлюючи штамп підтвердження на тому факті, що публічний ключ сайту дійсно належить йому та йому можна довіряти.

    У ваш браузер вже спочатку завантажено список акредитованих CA. Якщо сервер повертає сертифікат, не підписаний акредитованим CA, з'явиться велике червоне попередження. Інакше кожен міг би підписувати фіктивні сертифікати.

    Так що навіть якщо хакер узяв відкритий ключ свого сервера і згенерував цифровий сертифікат, що підтверджує, що цей публічний ключ, асоційований з сайтом facebook.com, браузер не повірить у це, оскільки сертифікат не підписаний акредитованим CA.

    Інші речі, які потрібно знати про сертифікати

    Розширена валідація
    На додаток до звичайних сертифікатів X.509, існують Extended validation сертифікати, що забезпечують більш високий рівеньдовіри. Видаючи такий сертифікат, CA здійснює ще більше перевірок щодо особи, яка отримує сертифікат (зазвичай використовуючи паспортні дані або рахунки).

    При отриманні такого сертифіката, браузер відображає в адресному рядку зелену плашку, крім звичайної іконки із замочком.

    Обслуговування безлічі веб-сайтів на одному сервері
    Оскільки обмін даними по протоколу TLSвідбувається ще до початку HTTP з'єднання, можуть виникати проблеми у випадку, якщо кілька веб-сайтів розташовані на тому самому веб-сервері, за тією ж IP-адресою. Роутінг віртуальних хостівздійснюється веб-сервером, але TLS з'єднання виникає ще раніше. Єдиний сертифікат на весь сервер буде використовуватись при запиті до будь-якого сайту, розташованого на сервері, що може викликати