SSL Security Errors: The Complete Guide to Diagnosing and Fixing Them Помилки SSL Security: Повний посібник з діагностики та їх усунення
Помилки SSL/TLS — одні з найбільш руйнівних проблем, з якими може зіткнутися веб-сайт. Одного попередження про сертифікат достатньо, щоб відвідувачі втекли — і це справедливо. Ці сповіщення браузера сигналізують про те, що зашифроване з’єднання між користувачем і сервером не можна перевірити, що ставить під загрозу конфіденційні дані. Незалежно від того, чи ви звичайний користувач інтернету, який натрапив на розчаровуючу сторінку попередження, чи власник веб-сайту, який спостерігає, як зростає показник відскоку, розуміння помилок безпеки SSL є важливим.
Цей комплексний посібник охоплює кожен основний тип помилки SSL, її першопричину та точні кроки, необхідні для її виправлення — з точки зору як користувача, так і адміністратора сервера.
Що таке SSL/TLS і чому це важливо?
SSL (Secure Sockets Layer) та його сучасний наступник TLS (Transport Layer Security) — це криптографічні протоколи, які шифрують дані, передані між веб-браузером і веб-сервером. Коли сайт використовує HTTPS, це означає, що на місці знаходиться сертифікат SSL/TLS, який автентифікує ідентичність сервера та захищає дані під час передачі.
Коли щось йде не так із цим сертифікатом — він закінчується, неправильно налаштований або браузер не може його перевірити — з’єднання позначається як небезпечне. Браузери, такі як Chrome, Firefox, Edge і Safari, відображають видимі сторінки попередження, щоб захистити користувачів від потенційних атак «людина посередині» або шахрайських сайтів.
Для власників веб-сайтів ці помилки не лише шкодять довірі користувачів — вони пошкоджують рейтинги SEO, зменшують конверсії та можуть сигналізувати про глибші проблеми інфраструктури, які потребують негайної уваги.
Найпоширеніші помилки безпеки SSL пояснені
1. Невідповідність імені домену
Що це означає: Назва домену, зазначена в Common Name (CN) сертифіката SSL або Subject Alternative Names (SANs), не відповідає домену, до якого браузер намагається отримати доступ.
Поширені причини:
- Сертифікат видано для www.example.com, але сайт доступний через example.com (або навпаки)
- Підстановочний сертифікат (*.example.com), який не охоплює кореневий домен
- Сертифікат від іншого домену випадково застосований до сервера
- Неправильно налаштовані віртуальні хости на Apache або Nginx
2. Сертифікат SSL закінчився (ERR_CERT_DATE_INVALID)
Що це означає: Кожен сертифікат SSL має період дійсності — зазвичай 90 днів для Let’s Encrypt або до 1–2 років для комерційних сертифікатів. Після закінчення цього періоду браузери негайно відхиляють з’єднання.
Поширені причини:
- Автоматичне поновлення не вдалося мовчки (помилка cron job, проблема DNS, порт 80 заблокований)
- Ручне поновлення було забуте
- Сертифікат був поновлений, але не перезавантажений веб-сервером
3. Помилка змішаного вмісту
Що це означає: Сторінка подається через HTTPS, але деякі вбудовані ресурси — зображення, файли JavaScript, таблиці стилів, iframe — все ще завантажуються через простий HTTP. Браузери блокують або попереджають про ці небезпечні під-ресурси.
Поширені причини:
- Застарілий вміст із жорстко закодованими http:// URL-адресами
- Віджети третіх сторін або скрипти, які використовують HTTP кінцеві точки
- Сайт, перенесений з HTTP на HTTPS без оновлення внутрішніх посилань
4. Недовірений сертифікат
Що це означає: Сертифікат видано Центром сертифікації (CA), якому браузер не довіряє. Це може статися з самопідписаними сертифікатами або сертифікатами від приватних/внутрішніх ЦС.
Поширені причини:
- Самопідписаний сертифікат, використаний у виробничому середовищі
- Неповний ланцюг сертифікатів (відсутні проміжні сертифікати)
- Сертифікат від ЦС, якому браузери більше не довіряють
5. Помилка протоколу / Невідповідність протоколу
Що це означає: Браузер і сервер не можуть узгодити взаємну версію протоколу SSL/TLS або набір шифрів. Це часто трапляється, коли сервер все ще підтримує застарілі протоколи, такі як SSLv3 або TLS 1.0.
Поширені причини:
- Сервер налаштований на використання застарілих версій TLS
- Брандмауер або балансувальник навантаження перехоплює трафік HTTPS на неправильному порту
- Трафік HTTP надсилається на порт HTTPS
6. Застарілий браузер
Що це означає: Старіші браузери можуть не підтримувати сучасні версії TLS (TLS 1.2 або 1.3), новіші набори шифрів або оновлені формати сертифікатів, що призводить до того, що дійсні сертифікати виглядають пошкодженими.
Як виправити помилки SSL як користувач
Якщо ви відвідуєте веб-сайт і стикаєтеся з попередженнями SSL, проблема може бути не завжди на стороні сервера. Ось кроки, щоб виключити проблеми на стороні клієнта:
Крок 1: Очистіть кеш браузера та файли cookie
Застарілі кешовані дані можуть змусити ваш браузер посилатися на стару, недійсну відповідь сертифіката.
Chrome:
- Натисніть Ctrl+Shift+Delete (Windows/Linux) або Command+Shift+Delete (Mac)
- Встановіть діапазон часу на Весь час
- Позначте Кешовані зображення та файли та Файли cookie та інші дані сайту
- Натисніть Очистити дані
Firefox:
- Перейдіть до Параметри → Приватність та безпека → Файли cookie та дані сайту
- Натисніть Очистити дані
Після очищення закрийте та повторно відкрийте браузер, потім повторно відвідайте сайт.
Крок 2: Перевірте дату та час системи
Перевірка сертифіката SSL залежить від часу. Якщо ваш системний годинник неправильний — навіть на день — браузер може дійти висновку, що дійсний сертифікат закінчився або ще не активний.
Windows:
- Клацніть правою кнопкою миші на годиннику на панелі завдань → Налаштувати дату/час
- Увімкніть Встановлювати час автоматично та Встановлювати часовий пояс автоматично
macOS:
- Перейдіть до Параметри системи → Загальні → Дата та час
- Увімкніть Встановлювати дату та час автоматично
Linux:
timedatectl set-ntp true
Крок 3: Оновіть браузер
Сучасні сертифікати SSL/TLS використовують алгоритми та розширення, які старіші версії браузерів не підтримують. Завжди запускайте останню стабільну версію вашого браузера.
- Chrome: Меню → Довідка → Про Google Chrome → Оновити
- Firefox: Меню → Довідка → Про Firefox → Оновити
- Edge: Меню → Довідка та відгуки → Про Microsoft Edge → Оновити
Крок 4: Тимчасово вимкніть VPN або проксі
VPN та проксі можуть перехоплювати HTTPS з’єднання та замінювати власні сертифікати, що викликає попередження браузера. Тимчасово вимкніть їх, щоб визначити, чи вони є джерелом помилки.
Крок 5: Перевірте сканування HTTPS антивірусу
Деякі антивірусні програми виконують інспекцію SSL, вводячи власні сертифікати. Якщо кореневий сертифікат антивірусу не довіряється вашим браузером, це викликає помилки SSL. Перевірте параметри антивірусу та вимкніть сканування HTTPS, якщо необхідно.
Як виправити помилки SSL як власник веб-сайту
Якщо ваш власний веб-сайт викидає помилки SSL, наступні кроки допоможуть вам систематично діагностувати та вирішити їх.
Виправлення 1: Поновіть закінчений сертифікат SSL
Використання Let’s Encrypt з Certbot:
Спочатку перевірте дату закінчення вашого поточного сертифіката:
openssl x509 -enddate -noout -in /etc/letsencrypt/live/example.com/cert.pem
Щоб поновити всі сертифікати, керовані Certbot:
certbot renew
Щоб примусово поновити навіть якщо сертифікат не близький до закінчення:
certbot renew –force-renewal
Після поновлення перезавантажте веб-сервер, щоб застосувати новий сертифікат:
sudo systemctl reload nginx
Автоматизуйте поновлення за допомогою cron job:
crontab -e
Додайте наступний рядок, щоб перевіряти поновлення двічі на день (рекомендується Let’s Encrypt):
0 */12 * * * certbot renew –quiet && systemctl reload nginx
> Порада для професіоналів: Якщо ви розміщуєте на AlexHost VPS Hosting, Certbot можна встановити та налаштувати безпосередньо на вашому Linux VPS, надаючи вам повний контроль над управлінням сертифікатами та автоматичним поновленням.
Виправлення 2: Розв’яжіть невідповідність імені домену
Ця помилка вимагає перевірки того, що ваш сертифікат охоплює точні домени, які використовує ваш сайт.
Перевірте, які домени охоплює ваш сертифікат:
openssl x509 -text -noout -in /etc/letsencrypt/live/example.com/cert.pem | grep -A 1 “Subject Alternative Name”
Або перевірте сертифікат безпосередньо:
echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null | openssl x509 -noout -text | grep -A 1 “Subject Alternative Name”
Якщо сертифікат не охоплює як www.example.com, так і example.com, перевидайте його з обома:
certbot certonly –webroot -w /var/www/html -d example.com -d www.example.com
Або з Apache:
certbot certonly –apache -d example.com -d www.example.com
Перевірте конфігурацію віртуального хоста (Nginx):
cat /etc/nginx/sites-available/example.com
Переконайтеся, що server_name відповідає доменам на сертифікаті точно.
Виправлення 3: Виправте помилки змішаного вмісту
Змішаний вміст — одна з найпоширеніших проблем після переносу сайту з HTTP на HTTPS.
Крок 1: Визначте змішаний вміст
Відкрийте Інструменти розробника браузера (F12) → вкладка Консоль. Попередження про змішаний вміст з’являються як:
Mixed Content: The page at ‘https://example.com’ was loaded over HTTPS, but requested an insecure resource ‘http://example.com/image.jpg’.
Крок 2: Оновіть жорстко закодовані посилання HTTP у базі даних (приклад WordPress)
Використовуйте інструмент WP-CLI або плагін на кшталт «Better Search Replace» для оновлення всіх посилань HTTP:
wp search-replace ‘http://example.com’ ‘https://example.com’ –all-tables
Крок 3: Додайте заголовок оновлення HTTPS в Nginx
add_header Content-Security-Policy “upgrade-insecure-requests”;
Або в Apache’s .htaccess:
Header always set Content-Security-Policy “upgrade-insecure-requests”
Крок 4: Примусово перенаправте HTTPS
В Nginx:
server { listen 80; server_name example.com; return 301 https://$server_name$request_uri; }
В Apache .htaccess:
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Виправлення 4: Розв’яжіть проблеми з ланцюгом сертифікатів (ERR_CERT_AUTHORITY_INVALID)
Неповний ланцюг сертифікатів — частої причини цієї помилки, особливо коли відсутній проміжний сертифікат.
Перевірте ланцюг за допомогою OpenSSL:
openssl s_client -connect example.com:443 -showcerts
Шукайте повний ланцюг: ваш сертифікат домену → проміжна ЦС → кореневої ЦС.
Виправлення в Nginx — переконайтеся, що ви використовуєте ssl_trusted_certificate (не просто ssl_certificate):
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
Виправлення в Apache:
SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem
Використовуйте SSL Labs Server Test для перевірки того, що ваш повний ланцюг сертифікатів правильно обслуговується.
Виправлення 5: Оновіть конфігурацію протоколу TLS
Вимкніть застарілі протоколи та примусово використовуйте TLS 1.2 та TLS 1.3 на вашому сервері.
Nginx — рекомендована конфігурація TLS:
ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on;
Apache — рекомендована конфігурація TLS:
SSLProtocol TLSv1.2 TLSv1.3 SSLCipherSuite HIGH:!aNULL:!MD5 SSLHonorCipherOrder on
Перезавантажте веб-сервер після внесення змін.
Виправлення 6: Увімкніть HTTP Strict Transport Security (HSTS)
HSTS інструктує браузери завжди використовувати HTTPS для вашого домену, запобігаючи атакам на зниження протоколу та проблемам змішаного вмісту.
Nginx:
add_header Strict-Transport-Security “max-age=31536000; includeSubDomains; preload” always;
Apache:
Header always set Strict-Transport-Security “max-age=31536000; includeSubDomains; preload”
> Попередження: Увімкніть HSTS з includeSubDomains лише після того, як ви впевнені, що весь ваш сайт працює на HTTPS. Цю директиву дуже важко скасувати.
Типи сертифікатів SSL: вибір правильного
Не всі сертифікати SSL однакові. Вибір правильного типу для вашого випадку запобігає багатьом поширеним помилкам з самого початку.
| Тип сертифіката | Найкраще для | Охоплення |
|---|---|---|
| Перевірка домену (DV) | Блоги, персональні сайти | Один домен або підстановочний |
| Перевірка організації (OV) | Бізнес-сайти | Один домен або підстановочний |
| Розширена перевірка (E |
