DNS параметры домена
Хотите узнать DNS параметры домена? Это просто! Введите его в поле ниже и нажмите «Проверить».
; > DiG 9.11.5-P4-5.1+deb10u7-Debian > ocsp.comodoca.com +noidnout -t ANY
;; global options: +cmd
;; Got answer:
;; ->>HEADER ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;ocsp.comodoca.com. IN ANY
;; ANSWER SECTION:
ocsp.comodoca.com. 124 IN CNAME ocsp.comodoca.com.cdn.cloudflare.net.
;; Query time: 0 msec
;; SERVER: 213.133.98.98#53(213.133.98.98)
;; WHEN: Mon Jan 29 03:39:10 MSK 2024
;; MSG SIZE rcvd: 96
Проверка SSL-сертификатов на предмет отзыва
В наше время одним из самых важных аспектов безопасной передачи информации является шифрование. Данные при передаче от клиента к серверу зашифровываются с помощью SSL-сертификата. Сертификат – это публичный ключ, заверенный удостоверяющим центром.
Все SSL-сертификаты, как правило, выдаются на ограниченный срок, по окончании которого они теряют силу и должны быть переизданы. Однако бывают случаи, когда сертификат может быть отозван ещё до окончания срока действия. Причин на отзыв SSL-сертификата довольно много, самые распространённые из них – закрытый ключ был утерян или скомпрометирован, изменились регистрационные данные компании и т.п.
Существует 2 альтернативных способа проверить, находится ли SSL-сертификат в списках отзыва:
- CRL (Certificate Revocation List) – проверяется наличие серийного номера сертификата в списке отзыва.
- OCSP (Online Certificate Status Protocol) – сертификат отправляется на специализированный сервер, где проверяется его статус.
CRL
Скачаем сертификат интересующего нас домена:
echo -n | openssl s_client -connect habr.com:443 -servername habr.com 2>&1 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /tmp/habr.com.crt
Спасибо legioner за подсказку добавить параметр -servername — он необходим для правильного выбора сертификата, если на один IP-адрес их установлено несколько (SNI).
Смотрим детали сертификата:
openssl x509 -noout -text -in /tmp/habr.com.crt
Здесь нас интересует в разделе «X509v3 CRL Distribution Points» пункт «Full Name».
Скачиваем по этой ссылке список CLR:
wget http://crl.comodoca.com/COMODORSADomainValidationSecureServerCA.crl
Выдираем серийный номер сертификата:
openssl x509 -in /tmp/habr.com.crt -noout -serial
Смотрим, есть ли этот номер в списке CRL:
openssl crl -inform DER -text -in COMODORSADomainValidationSecureServerCA.crl | grep "90E58B0601C3AD98F07AEE092041C437"
Если ничего не нашлось, значит сертификат не является отозванным.
OCSP
Выведем на экран сертификат интересующего нас домена и цепочки промежуточных (Intermediate) сертификатов:
echo -n | openssl s_client -connect habr.com:443 -showcerts
Сохраним в файлы сертификат домена и промежуточный сертификат (код между строками ——BEGIN CERTIFICATE—— и ——END CERTIFICATE——):
/tmp/habr.com.crt /tmp/intermediate.crt
openssl x509 -in /tmp/habr.com.crt -noout -ocsp_uri
Отправим запрос OCSP-серверу проверить сертификат на предмет отзыва:
openssl ocsp -url http://ocsp.comodoca.com -issuer /tmp/intermediate.crt -cert /tmp/habr.com.crt -text
Если всё указали правильно, то OCSP-сервер должен вернуть информацию по сертификату.
Здесь интерес представляют последние строчки:
Response verify OK /tmp/habr.com.crt: good
Об отсутствии сертификата в списке отозванных говорит значение «good», если же сертификат отозвали, то значение будет «revoked».
Автоматизация
Проверять SSL-сертификаты на предмет отзыва вручную не всегда удобно, поэтому процесс проверки можно автоматизировать.
Для этого берём с Github готовый скрипт ssl-check-revoc.sh, который осуществляет проверку сертификатов методом CRL:
wget https://raw.githubusercontent.com/o-pod/security/master/ssl-check-revoc.sh
Далее делаем скрипт исполняемым:
chmod a+x ssl-check-revoc.sh
Теперь можно проверять как уже установленные сертификаты для домена, так и сохранённые локально в файлы (опция -f):
./ssl-check-revoc.sh habr.com -v
Zabbix
Скрипт ssl-check-revoc.sh может проверять сертификаты не только из консоли, он также вполне подходит в качестве чекера для Zabbix, поэтому всю грязную работу по отслеживанию попадания сертификатов в список отзыва можно поручить системе мониторинга.
Заходим в конфиг Zabbix /etc/zabbix/zabbix_server.conf и смотрим, где лежат скрипты для внешних проверок:
ExternalScripts=/etc/zabbix/externalscripts
Копируем в этот каталог наш скрипт и рестартуем Zabbix:
sudo cp ssl-check-revoc.sh /etc/zabbix/externalscripts/ sudo systemctl restart zabbix-server
Заходим в веб-интерфейс и создаём шаблон (Configuration >> Templates >> Create template). В качестве имени шаблона указываем «Template SSL Checking». Затем внутри шаблона создаём элемент данных (Item) «SSL Certificate in Revocation List», в качестве ключа указываем «ssl-check-revoc.sh[]», с типом проверки «External check». Интервал проверок можно установить на своё усмотрение в зависимости от критичности проекта.

Также понадобятся два триггера:
1. Для сигнализации отзыва сертификата «Certificate for domain is in revocation list»
Expression: «=1″

2. Для сигнализации об ошибке на случай, если что-то пойдёт не так (например возникнут проблемы с CLR-сервером и т.п.) «Error to check certificate for domain »
Expression: «=2″

Не забываем в экшенах (Configuration >> Actions) настроить способ оповещения в случае срабатывания триггеров.
Теперь осталось создать хосты, сертификаты которых будем регулярно проверять (Configuration >> Hosts >> Create host). На вкладке Templates прилинковываем наш темплейт «Template SSL Checking».

И всё! Можно спать спокойно: если SSL-сертификат вашего домена по какой-либо причине попадёт в список отозванных, Zabbix сразу же вам сообщит.
- Информационная безопасность
- Серверное администрирование
OCSP stapling в Nginx
В зависимосте от типа сертификата в архиве могут быть другие файлы:
AddTrustExternalCARoot.crt / Root CA Certificate / Корневой сертификат
COMODORSAAddTrustCA.crt / Intermediate CA Certificate / Промежуточный сертификат
COMODORSADomainValidationSecureServerCA.crt / Intermediate CA Certificate
foobar_com.crt — Сертификат домена
В этом случае команда выглядит так
$ cat foobar_com.crt COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt AddTrustExternalCARoot.crt > ssl_bundle.crt
Да, так советует делать инструкция от Comodo. Но в таком случае на SSLLabs будет предупреждение Chain issues — Contains anchor. Поэтому AddTrustExternalCARoot.crt нужно исключить и правильная команда выглядит так
$ cat foobar_com.crt COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt > ssl_bundle.crt
Далее нам нужен файл, содержащий сертификаты (корневой+промежуточный) для проверки ответов OCSP
$ cat COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt > foobar_com_ocsp.crt
Если нужно скачать сертификаты ♂️
Пример конфигурационного файла для OCSP stapling
server < listen 443 ssl; server_name foobar.com; ssl_certificate /etc/ssl/foobar_com.crt; ssl_certificate_key /etc/ssl/foobar_com.key; ssl_trusted_certificate /etc/ssl/foobar_com_ocsp.crt ssl_stapling on; ssl_stapling_verify on; resolver 1.1.1.1 8.8.8.8 valid=300s ipv6=off; resolver_timeout 5s; >
Слишком маленькое значение resolver_timeout (менее 5 секунд) может вызвать ошибку
"ssl_stapling" ignored, host not found in OCSP responder "ocsp.comodoca.com"
Если настроен фаервол, то не забудьте разрешить вашему серверу исходящие соединения к OCSP URL .
Узнаем OCSP URL
$ openssl x509 -in /etc/ssl/foobar_com.crt -noout -ocsp_uri http://ocsp.comodoca.com
Раз уж теперь известен OCSP сервер, то можно провести тест через консоль с openssl.
$ openssl ocsp -issuer intermediate.crt -cert foobar_com.crt -url http://ocsp.comodoca.com -no_nonce
Успешный вывод команды выглядит так
Response verify OK /etc/ssl/foobar_com.crt: good This Update: Apr 29 04:51:34 2020 GMT Next Update: May 6 04:51:34 2020 GMT
Если вдруг Responder Error: unauthorized, то читаем RFC5019
Также рекомендую очень полезную статью — Настройка и оптимизация OCSP
Сайт rtfm.wiki использует cookies и трекинг посещений. Продолжая использовать этот сайт, вы соглашаетесь с сохранением файлов cookie на вашем компьютере. Если вы не согласны покиньте сайт или включите Adblock ОК Что такое cookies?
Включение OCSP Stapling
Доброе утро, уважаемые гуру программирования! Очень нужна Ваша помощь! Являюсь владельцем сайта, но совершенно не владею какими-либо специальными техническими познаниями в этой области. До сего момента вполне хватало изучения обсуждений на форумах или официальных сайтах разработчиков функций, которые собирался применить. Недавно перевел сайт на https, настроил сертификат (А+ по ssslabs.com), но оказался совершенно не способен подключить OCSP Stapling. Перед настройкой перевел сервер в ручной режим работы, добавил всяких необходимых заголовков, усилил, так сказать, безопасность . но при включении строк, необходимых для включения OCSP Stapling сервер отказывается перезагружаться и проявляется ошибка 500. При этом в конфигурационном файле сервера нет раздела : все команды вписывал в модуле ssl, «создавал» раздел и пытался его «активировать», но безуспешно. Однако этот раздел есть в конфигурационном файле самого сайта. Сайт также переводил в ручной режим работы, пытался подключить OCSP Stapling, но результат всегда одинаков. Смущает то, что в конфигурационном файле сервера указаны пути до двух сертификатов и ключа (путь указан реальный, есть и папки и сами файлы: home/site/etc/ssl/сертификат.crt (или ключ.key), а в таком же файле сайта только один путь до сертификата самого сайта и до ключа и не указан путь до промежуточного сертификата, как-будто его и нет. Причем «отследить» эти пути не знаю как: таких папок в документах сайта найти не могу (etc/ssl/несуществующая папка/сертификат.crt (или ключ.key). Пытался спрашивать поддержку, но по настройке в ручном режиме она «не поддерживает», советует все перевести в режим автоматический. Подскажите, пожалуйста, есть ли какой-то универсальный и максимально простой способ подключить OCSP Stapling на сервере Apache? С уважением,

Protector
21.01.17 09:30:33 MSK