Стендап Сьогодні 📢 Канал в Telegram @stendap_sogodni
🤖🚫 AI-free content. This post is 100% written by a human, as is everything on my blog. Enjoy!25.12.2022
Основи TLS - типові помилки протоколу та що вони значать
Напевно, всі ми більше за все стикаємся з TLS, коли він не працює. Розʼяснимо найчастіші випадки, коли це трапляється.
Найпоширеніша проблема - у сертифіката сервера сплив термін дії. Так, у всіх сертифікатів в принципі є термін дії. Чому? Головна причина в тому, що зі зростанням обчислювальної можливості безпека потребує довших ключів, тож старі сертифікати рано чи пізно стають небезпечними. Щоб уникнути цього, та інших можливих вразливостей, сертифікати необхідно примусово оновлювати, зазвичай раз на рік. 😅 Якщо адміністратор цього не зробить - клієнти побачать помилку “сплив термін дії сертифікату”. 👹 АБО зловмисник підібрав ключа до старого сертифікату, чи просто його вкрав.
Далі - трапляється що імʼя домену в сертифікаті не співпадає з адресою сервера. 😅 Це зазвичай проблема налаштувань DNS, а не сертифікату; а саме, домен спрямований на неправильний або не налаштований сервер. Так може статись на “спильному” хостингу, такому як Heroku, якщо не повідомити сервісу, що у вас є власний домен. Або сайт переїхав на інший домен, а сертифікат не поміняли. Або на сервері декілька доменів, та для деяких забули купити сертифікат. 👹 АБО хтось видає свій сервер за інший, може, з дуже схожим імʼям.
Інколи клієнт не може перевірити сертифікат, тому що в системі не вистачає кореневих сертифікатів. З сучасним та оновленим компʼютером чи телефоном такого ніколи не трапиться. 😅 Але на сервері трапляється, особливо в докері (де часто за замовчування ніякі сертифікати не встановлені), або зі старою версією ОС. Кращим рішенням буде встановити або оновити сертифікати. Гіршим - відключити аутентифікацію HTTPS, що вдасться зробити тільки з власним кодом. 👹 Ніколи не можна встановлювати додаткові кореневі сертифікати від особ, яким не довіряєш абсолютно - бо ця особа отримає можливість фальсифікувати для вашої системи будь-який сертифікат.
Якщо вже заговорили про відключення автентифікації - то є ще сценарій, коли беруть “власноруч підписаний” сертифікат. Такий сертифікат неможливо аутентифікувати, в принципі - тільки приняти на віру. Але навіть такий сертифікат дозволить шифрувати сесію. Та його можно згенерувати на своїй машині та безплатно. Тому часто такі сертифікати вживають у внутрішніх мережах. Але я б радив натомість брати mkcert.
Коли побачите Помилку протоколу TLS або Несумісну версію TLS, то (з мого досвіду) це не буде викликано справжніми багами клієнта чи сервера. Скоріш за все, така помилка викликана тим, що сервер віддав HTTP замість HTTPS, а клієнт намагається трактувати документ HTTP як рукостискання TLS. 😅 Може, адміністратор переплутав порти, чи не увімкнув HTTPS. 👹 Але ще це улюблений метод третіх особ блокувати доступ. Наприклад, провайдера, якщо ти не заплатив за інтернет. Або деяка система безпеки заблокувала сайт. Оскільки ніхто не може підмінити HTTPS (та й добре!), то замість нього такі добродії дають браузеру сторінку HTTP. Щоб перевірити, треба замість https://mysite.com
написати http://mysite.com:443
- це може показати справжню сторінку блокування.