Главная / База знаний / Технические проблемы / SSL-сертификат отсутствует или просрочен
База знаний

SSL-сертификат отсутствует или просрочен

Без действительного SSL — Chrome ругается, поисковики понижают. Бесплатный Let's Encrypt и автообновление.

Технические проблемы · 3 мин чтения

Симптом

Причина

SSL‑сертификат хранится на веб‑сервере и имеет срок действия.
- Просроченный сертификат – срок действия истёк, но сервер всё ещё отдаёт его клиенту.
- Отсутствующий сертификат – сервер не настроен на выдачу TLS‑соединения (порт 443 не слушает, конфигурация nginx/apache не содержит ssl_certificate).
- Неправильный домен – сертификат выдан для другого домена, поэтому браузер считает его недействительным.
- Проблемы с цепочкой – отсутствуют промежуточные сертификаты, из‑за чего браузер не может проверить доверие.

Как проверить

  1. Проверка через браузер
    - Кликните по замку в адресной строке → «Сведения о сертификате» → проверьте дату окончания и имя субъекта.

  2. Команда openssl
    bash openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -dates -subject Вывод покажет notBefore и notAfter.

  3. Проверка цепочки
    bash openssl s_client -connect example.com:443 -servername example.com -showcerts Убедитесь, что после сертификата клиента идут промежуточные сертификаты до корневого.

  4. Проверка через онлайн‑сервисы
    - SSL Labs: https://www.ssllabs.com/ssltest/analyze.html?d=example.com
    - Google Search Console → «Безопасность» → «Проблемы сертификата».

  5. Проверка конфигурации сервера
    - nginx: nginx -t
    - apache: apachectl configtest

Решение

1. Получить новый сертификат (Let’s Encrypt)

sudo apt-get update
sudo apt-get install certbot python3-certbot-nginx

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

Связанные

SEO КП · нужна помощь?

Не хотите разбираться сами?

Запустите технический аудит сайта за 5 минут — получите PDF-отчёт с разбором всех 64 параметров и конкретными точками роста. Или закажите комплексное SEO-продвижение сайта — починим всё это и возьмём на себя дальнейшую оптимизацию.

Запустить аудит за 199 ₽ Узнать про продвижение →