SSL-сертификат отсутствует или просрочен
Без действительного SSL — Chrome ругается, поисковики понижают. Бесплатный Let's Encrypt и автообновление.
Симптом
- В браузере Chrome появляется предупреждение «Ваше соединение не защищено» или «Сайт не защищён» при переходе по https.
- В адресной строке вместо замка отображается иконка «небезопасно» или «⚠️».
- В консоли разработчика виден список ошибок типа
NET::ERR_CERT_DATE_INVALIDилиNET::ERR_CERT_COMMON_NAME_INVALID. - Поисковики (Google, Yandex) снижают рейтинг сайта, а в отчётах Google Search Console видны предупреждения «Сертификат просрочен».
- При попытке подключиться к серверу через
curl -I https://example.comвыводится сообщение о недействительном сертификате.
Причина
SSL‑сертификат хранится на веб‑сервере и имеет срок действия.
- Просроченный сертификат – срок действия истёк, но сервер всё ещё отдаёт его клиенту.
- Отсутствующий сертификат – сервер не настроен на выдачу TLS‑соединения (порт 443 не слушает, конфигурация nginx/apache не содержит ssl_certificate).
- Неправильный домен – сертификат выдан для другого домена, поэтому браузер считает его недействительным.
- Проблемы с цепочкой – отсутствуют промежуточные сертификаты, из‑за чего браузер не может проверить доверие.
Как проверить
-
Проверка через браузер
- Кликните по замку в адресной строке → «Сведения о сертификате» → проверьте дату окончания и имя субъекта. -
Команда
openssl
bash openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -dates -subjectВывод покажетnotBeforeиnotAfter. -
Проверка цепочки
bash openssl s_client -connect example.com:443 -servername example.com -showcertsУбедитесь, что после сертификата клиента идут промежуточные сертификаты до корневого. -
Проверка через онлайн‑сервисы
- SSL Labs:https://www.ssllabs.com/ssltest/analyze.html?d=example.com
- Google Search Console → «Безопасность» → «Проблемы сертификата». -
Проверка конфигурации сервера
- nginx:nginx -t
- apache:apachectl configtest
Решение
1. Получить новый сертификат (Let’s Encrypt)
sudo apt-get update
sudo apt-get install certbot python3-certbot-nginx
- Для nginx:
bash sudo certbot --nginx -d example.com -d www.example.com - Для apache:
bash sudo certbot --apache -d example.com -d www.example.com
2. Настроить автообновление
Let’s Encrypt сертификаты действуют 90 дней. Добавьте cron‑задачу:
0 3 * * * /usr/bin/certbot renew --quiet
или используйте встроенный timer в systemd:
sudo systemctl enable certbot.timer
sudo systemctl start certbot.timer
3. Проверить конфигурацию nginx (пример)
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name example.com www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
root /var/www/html;
index index.html index.htm;
}
После изменения конфигурации перезапустите nginx:
sudo nginx -t && sudo systemctl reload nginx
4. Проверить цепочку вручную
openssl s_client -connect example.com:443 -servername example.com -showcerts
В выводе должна быть цепочка: клиентский сертификат → промежуточный → корневой.
5. Проверить в браузере и в SSL Labs
- Откройте сайт, убедитесь, что замок зелёный.
- Перейдите на SSL Labs, убедитесь, что оценка A и цепочка полностью доверена.
Связанные
Не хотите разбираться сами?
Запустите технический аудит сайта за 5 минут — получите PDF-отчёт с разбором всех 64 параметров и конкретными точками роста. Или закажите комплексное SEO-продвижение сайта — починим всё это и возьмём на себя дальнейшую оптимизацию.