Рейтинг:0

Зарегистрируйте сертификат ssl, который apache использует для каждого соединения SSL, для расширенного ведения журнала и отладки.

флаг bg

У меня есть веб-сервер apache с сертификатами mod_ssl и SSL от letsencrypt. certbot сообщает, что они в порядке и не истекают. Несколько разных (из многих моих пользователей) сообщают, что они получают недействительные/истекшие SSL-сертификаты с сервера (и я вижу вывод из wget от них, чтобы доказать это).

Чтобы отладить это, я хочу регистрировать множество деталей каждого SSL-соединения. Я хотел бы регистрировать для каждого SSL-соединения удаленный IP-адрес и сведения о SSL-соединении (например, протокол), клиент предоставил значение SNI (идентификация имени сервера), а затем какой SSL-сертификат/цепочка/ключ на сервере использовался . я хочу

С ErrorLog ssl: трассировкаN (для различных Н) Я могу получить некоторые из этих деталей. Но я не вижу, какой SSL-сертификат использует сервер для каждого соединения. Как я могу это сделать?

Nikita Kipriyanov avatar
флаг za
`wget` - не лучший способ проверить сертификат. Узнайте, как использовать инструмент `openssl s_client`, который был разработан только для целей отладки SSL/TLS.
флаг bg
Я не использую wget для проверки SSL-сертификата. Я использую `openssl s_client` для мониторинга. Однако некоторые из моих пользователей используют `wget` для загрузки файлов, и они сталкиваются с этой ошибкой и присылают мне по электронной почте вывод терминала.
Nikita Kipriyanov avatar
флаг za
Вполне возможно, что их `wget` использует старую базу данных `ca_certificates`, которая не включает новый корневой сертификат Let's Encrypt или некоторые другие. Вот почему их wget жалуется. Если это так, вы ничего не можете и не должны делать, это их сторона, которая должна быть исправлена.
Рейтинг:1
флаг in

mod_ssl экспортирует кучу переменных окружения (смотрите список здесь), который можно использовать для регистрации информации о сертификате, например, в Формат журнала такая директива:

LogFormat "cert_CN='%{SSL_SERVER_S_DN_CN}e', cert_expires='%{SSL_SERVER_V_END}e', vhost='%{Host}i', client='%h'" ssl_combined

Тем не менее, прежде чем начать регистрацию, убедитесь, что вы проверили эта статья об истечении срока действия сертификата DST Root CA X3.Это тот, который подписал корневой ЦС Let's Encrypt, и срок его действия истек в сентябре. Однако корневой ЦС Let's Encrypt сам по себе считается доверенным ЦС практически каждой системой. Для этого истечение срока не проблема, а выданные сертификаты продолжают работать, кроме для старых систем, использующих openssl версия < 1.1.0, которая не останавливает проверку при обнаружении доверенного ЦС, но настаивает на проверке всей цепочки (и терпит неудачу).

Если рассматриваемая система имеет более раннюю версию openssl, вы ничего не можете сделать с проблемой на стороне сервера, openssl надо обновить на клиенте. Если это не вариант, помогает занесение просроченного сертификата в черный список.

флаг bg
да, интересно, актуально ли здесь изменение сертификата letsencrypt
Nikita Kipriyanov avatar
флаг za
Опять же, если старая проблема openssl или старая ca_certificates существует на клиенте, вы ничего не можете сделать на стороне сервера. Обучайте своих пользователей, объясняйте им, почему использование устаревшего ПО — это плохо, зачем нужны обновления.
флаг bg
Да, я предполагаю, что это изменение LE. Но я хочу быть уверен на 100%.
Рейтинг:1
флаг za

Apache HTTPD mod_ssl устанавливает различные переменные среды, некоторые из которых можно использовать для идентификации сертификата сервера. Например, есть SSL_SERVER_CERT (полный сертификат в кодировке PEM), SSL_SERVER_S_DN (DN субъекта), SSL_SERVER_M_SERIAL (серийный номер сертификата).

Вы можете использовать их в конфигурации ведения журнала:

CustomLog "logs/ssl_request_log" "... %{SSL_SERVER_S_DN}x ..."

Читать руководство mod_ssl для деталей.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.