Парсер сертификатов

Сертификаты X.509 — это стандартный формат сертификатов открытых ключей, используемых в TLS/SSL. Этот инструмент разбирает сертификаты в формате PEM, отображая субъект, издателя, период действия, данные открытого ключа и расширения. Незаменим для отладки проблем с HTTPS-соединениями.

Спецификации

Типичные сценарии использования

  • Отладка ошибок SSL/TLS-соединения ("certificate has expired")
  • Проверка покрытия сертификатом правильных доменных имён
  • Проверка сроков истечения сертификатов для планирования продления
  • Просмотр промежуточных и корневых сертификатов в цепочке
  • Проверка соответствия атрибутов сертификата требованиям

Возможности

  • Разбор сертификатов в формате PEM (-----BEGIN CERTIFICATE-----)
  • Отображение различительных имён субъекта и издателя
  • Показ периода действия (Не ранее / Не позднее)
  • Извлечение алгоритма и размера открытого ключа
  • Отображение альтернативных имён субъекта (SAN)
  • Показ расширений сертификата (Key Usage, Extended Key Usage, Basic Constraints)
  • Отображение идентификаторов ключей Authority/Subject
  • Точки распространения CRL и URL-адреса доступа к информации об удостоверяющем центре

Примеры

Самоподписанный сертификат

Попробовать →

Сертификат X.509 для example.com с альтернативными именами субъекта.

-----BEGIN CERTIFICATE-----
MIIEFTCCAv2gAwIBAgIUb7VAvx3CADEDexgoNd41E9Y5tZowDQYJKoZIhvcNAQEL
BQAwfDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcM
DVNhbiBGcmFuY2lzY28xFDASBgNVBAoMC0V4YW1wbGUgSW5jMRQwEgYDVQQLDAtF
bmdpbmVlcmluZzEUMBIGA1UEAwwLZXhhbXBsZS5jb20wHhcNMjYwMTI1MDQ0ODMw
WhcNMjcwMTI1MDQ0ODMwWjB8MQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZv
cm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzEUMBIGA1UECgwLRXhhbXBsZSBJ
bmMxFDASBgNVBAsMC0VuZ2luZWVyaW5nMRQwEgYDVQQDDAtleGFtcGxlLmNvbTCC
ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALKN/rhprC1rfrwKpj9ZqwRR
4c51daZRMlij1NbmUJn7KiZTghxu1OtOEodGmpcF3xuWxiBYTOKvQZ+qPpED6IAG
IYtANPetAkRbsf/xdZZZ/BRR3jQQ2AVDfyuBSYjYEV4JMVG47JCj7oewgNb0dejv
HI18aBWzIGE6v9Zv5FDt+d3GjJignI8elrGzrnJg85qsd743xSEPALqf1NsyhjtY
Th91DazAOoPzA/DMXzoXUhAf9C5uWQlSdn6JDzs8/ld0c+LZH9ohvC/IN/PfdkYg
NYR2AJutUdxbOPPmcFm46o/WpquV2H0mIMuvdzI+k/tk6wVV2jwu2ysQLwweqecC
AwEAAaOBjjCBizAdBgNVHQ4EFgQU9Th/a8eJZ9DHh5uUGyf+iTSNF14wHwYDVR0j
BBgwFoAU9Th/a8eJZ9DHh5uUGyf+iTSNF14wDwYDVR0TAQH/BAUwAwEB/zA4BgNV
HREEMTAvggtleGFtcGxlLmNvbYIPd3d3LmV4YW1wbGUuY29tgg9hcGkuZXhhbXBs
ZS5jb20wDQYJKoZIhvcNAQELBQADggEBAE1rGDKmhMBkcdwZva/9CouLeLOIHBiI
uPH1LV6Pbl2KJ11w1L36SstF17+M3Sn0SJxstCePJWlfLlx6r5JZSyNAQghmgep1
/YWrsDtC3bjs4stOz1FWUgUDs+b7pf+h93lLTShX8mue2rjIXbYJPJx9XsCmyx1R
zLuYSoOSQ/0aR7NSzjqgoHEUNI/2mGTRJ6ngC0vx88ppn+tuk8PyAXt8kp8hPx3I
6lmmyzfuwt0JZIawW2p1nkMlGt2IBIxBBY7vjAHCTDRa69YP08QeImDM13FelUVh
tXPOCJaWXZQmppgKNtmpedswRRtOyl83cqzkz4rZRpjnpPqIEWNQ9bs=
-----END CERTIFICATE-----

Закрытый ключ

Попробовать →

Соответствующий закрытый ключ RSA в формате PKCS#8.

-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCyjf64aawta368
CqY/WasEUeHOdXWmUTJYo9TW5lCZ+yomU4IcbtTrThKHRpqXBd8blsYgWEzir0Gf
qj6RA+iABiGLQDT3rQJEW7H/8XWWWfwUUd40ENgFQ38rgUmI2BFeCTFRuOyQo+6H
sIDW9HXo7xyNfGgVsyBhOr/Wb+RQ7fndxoyYoJyPHpaxs65yYPOarHe+N8UhDwC6
n9TbMoY7WE4fdQ2swDqD8wPwzF86F1IQH/QublkJUnZ+iQ87PP5XdHPi2R/aIbwv
yDfz33ZGIDWEdgCbrVHcWzjz5nBZuOqP1qarldh9JiDLr3cyPpP7ZOsFVdo8Ltsr
EC8MHqnnAgMBAAECggEAANyt1b1JqlASJPcQMmiABBDsVcJvacW+lOFfNHv/XtIk
AMD3QdfiVnh8BZ2SC+Sbw4nvNVZeMkH4v4j84FcnSjO9YB5Ub+9GSyCXzWdT0zQA
AyeAbe2FSkRqWsI3CETl+iqlMekCPpIfPRYQqSw1w+tTm5APZWHSzpiQA7ydwSsP
sJ1QBq64eXSXFhpyLG0LE4ATeyH9dxj9n9NocL0QOqT+Tl5Dcjlxc7fYmoHStC0q
9Xb5h1Po3kmESAELdUobBbJvJFVK98PMB6osUR4VM4snQJOJZ+4Df7bxU311OgLB
Am/mQjsnyZqBWjDQaUj/BGnapJxqB+a102Ki3XMX4QKBgQDcmUc0c+zfRfnic22Q
ytJ3Y29N1C52GESFulL+cYfwwfVK/VXWT1b/eECABVWZvzP22wyEnkodkYWSoN86
GK2PvH8ii9EpkkCtRabFqmbfqPysTKawu9/BgrVAvEvRQjHHAUZnytwtw+IcL6Nz
EjQ4UrFK+3/rycT05I/ToHRgGQKBgQDPNXI0OSJ1nl7YQOry4C4ekT/uCJAbV7bN
MU49iSMqldlXy+VvSKAwErzvaAtQUolvu3DPw2hcpMxuH+hoHweTA0lu0VbZRKvS
1EhMWQGN2qrSQYcnhvKY/BUbd7KjZ858PeOBcTgyCfBkfdBNgughjsCv2BxKGxQI
Li2gSWSZ/wKBgF0M2pgpffUAE1ON1N2KcBSkAMMXiTGPMvgli/R/9xN6/PjQu3BW
rx+7nZlipqTfng+2fiVCj4jBZVJgQUjEOBG1NPthdqzOYDG2e45NPm+BXHNhMb7C
wLNjawkPY/u0rEKBKy2EyDMVuT6iaZOUTiqj1t0GEQNobIfQEUr3F5+hAoGAZuD3
afxwIovWNXLN9HbgDyc44Zt4yUqcpXZ0jVL4ld0+wzumF8GsXxH+orM64s+IE2Sy
V0WDHHRqV8cZ4hB99z0riY0AnPFeilgB6X5Lqj3GkIweab6z1sdaR3//vuf8em1T
9uHa7+VFaO+aq9FyJa819ljLevPE12buGmY2P8sCgYEAoSk3KwiEO9zvxuuwqdBh
Qv/dvWPgh/KttWcoL6Axt1z4gG+vdidn8xIdVGy6xnQOYpm+ANqRpWO82Hws5ITy
8uDn/S2kjQnyh8Cz7jJLBiJUxz/ZWfUz56cQq3Bej46oJN6UKkhJ9ogAjUJAYjV1
7JIWxv6OC7Cg6xfHCGRa7F0=
-----END PRIVATE KEY-----

Советы

  • Экспорт сертификата из браузера: нажмите на замок > Сертификат > Подробности > Экспорт.
  • Получение сертификата сайта: openssl s_client -connect example.com:443
  • SAN (Subject Alternative Names) содержат список всех допустимых доменных имён.
  • Корневые сертификаты являются самоподписанными (издатель = субъект).
  • Проверка цепочки сертификатов: openssl verify -CAfile ca.pem cert.pem

Описание Парсер сертификатов

Сертификаты X.509 являются основой доверия в интернете, обеспечивая шифрование TLS/SSL для HTTPS-соединений, подписание кода, безопасность электронной почты (S/MIME) и аутентификацию VPN. Сертификат связывает открытый ключ с идентификатором (доменным именем, организацией или физическим лицом), а удостоверяющий центр (CA) подтверждает эту связь, подписывая сертификат цифровой подписью.

Сертификаты обычно хранятся в формате PEM — данные DER, закодированные в Base64, заключённые между маркерами -----BEGIN CERTIFICATE----- и -----END CERTIFICATE-----. Сертификат содержит субъект (кого идентифицирует сертификат), издателя (кто его подписал), период действия (даты Не ранее и Не позднее), открытый ключ субъекта и расширения, контролирующие использование. Расширение Subject Alternative Name (SAN) перечисляет все доменные имена, которые покрывает сертификат.

Цепочки сертификатов устанавливают доверие, связывая сертификат конечного субъекта с доверенным корневым CA через один или несколько промежуточных CA. Когда браузер подключается к веб-сайту, он проверяет цепочку: сертификат сервера был подписан промежуточным CA, который был подписан корневым CA, которому доверяет браузер. Нарушенная цепочка — отсутствие промежуточных сертификатов или неизвестный корневой — вызывает знакомую ошибку «Ваше соединение не является конфиденциальным».

Управление сертификатами — частая причина сбоев. Просроченные сертификаты приводят к немедленному прекращению работы сервиса. Несоответствие доменных имён вызывает предупреждения браузера. Отсутствие промежуточных сертификатов работает в некоторых браузерах (которые могут кешировать или загружать их), но не работает в других браузерах и API-клиентах. Мониторинг срока действия сертификатов и автоматизация продления с помощью таких инструментов, как Let's Encrypt и certbot, необходимы для надёжной работы.

Чтобы проверить, когда истекает сертификат, вставьте содержимое PEM в этот инструмент и посмотрите дату «Не позднее». Из командной строки выполните openssl x509 -enddate -noout -in cert.pem для локального файла или openssl s_client -connect example.com:443, перенаправив вывод в openssl x509 -noout -enddate для удалённого сервера. Автоматический мониторинг через certbot, cert-manager или специализированные сервисы мониторинга может оповещать задолго до истечения срока, предотвращая сбои.

Корневые сертификаты являются самоподписанными (издатель равен субъекту) и предустановлены в браузерах и операционных системах как якоря доверия. Промежуточные сертификаты подписаны корневым CA и используются для подписания сертификатов конечных субъектов. Такая цепочка доверия защищает корневой ключ — если промежуточный сертификат скомпрометирован, отзывается только этот промежуточный, а не корневой. Серверы должны отправлять полную цепочку (сертификат конечного субъекта плюс все промежуточные), но не должны включать сам корневой сертификат.

Альтернативные имена субъекта (SAN) перечисляют все доменные имена и IP-адреса, для которых действителен сертификат. Один сертификат может защищать несколько доменов, таких как example.com, www.example.com и api.example.com, с помощью SAN. Современные браузеры используют SAN вместо поля Common Name (CN) для проверки домена. Wildcard-сертификаты (*.example.com) покрывают один уровень поддоменов, но не сам основной домен.

Сертификат, который работает в браузерах, но не работает в API-клиентах, — распространённая проблема, вызванная неполными цепочками сертификатов. Браузеры более снисходительны — некоторые автоматически загружают недостающие промежуточные сертификаты через AIA (Authority Information Access) или используют ранее кешированные промежуточные сертификаты. API-клиенты, такие как curl, Node.js и библиотека requests Python, обычно требуют отправки полной цепочки сервером. Убедитесь, что ваш сервер настроен на отправку сертификата конечного субъекта плюс все промежуточные сертификаты, и протестируйте с помощью curl -v или openssl s_client для проверки полноты цепочки.

← Вернуться ко всем инструментам