Назад | Перейти на главную страницу

Как сравнить два сертификата SSL?

Как лучше всего сравнить два сертификата SSL? Есть ли авторитетные инструменты? Причина, по которой я хочу это сделать, заключается в том, что у меня есть 2 сертификата, по-видимому, с одинаковыми свойствами, но один работает, а другой нет. Чтобы быть ясным, я хочу сравнить атрибуты, я знаю, что подписи не будут совпадать, поскольку они выпускаются в разное время.

Openssl предоставляет инструмент для их декодирования:

openssl x509 -text -in bla.pem

Впоследствии вы могли бы использовать vimdiff чтобы сравнить их, или любой другой инструмент для сравнения.

Можно предположить, что если вы включили правильные доменные имена, вы также включили их в качестве «альтернативного имени субъекта»?

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

Начните с проверки того, что оба сертификата на самом деле одинаковы

$ openssl x509 -noout -modulus -in server.nr1.crt | openssl md5
$ openssl x509 -noout -modulus -in server.nr2.crt | openssl md5

Если они оба получены из одного и того же csr, то md5 будет соответствовать.

Проверьте сертификаты по закрытому ключу следующим образом, чтобы убедиться, что сертификат и закрытый ключ совпадают:

$ openssl x509 -noout -modulus -in server.crt | openssl md5
$ openssl rsa -noout -modulus -in server.key | openssl md5

Выходные хеш-значения md5 должны совпадать.

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

$ openssl req -noout -modulus -in server.csr | openssl md5

Клиенты захвата пакетов, использующие каждого из них по сети. Используйте инструмент, который может выполнять небольшой анализ разговоров, например Wireshark. Или поищите фантазию и воспользуйтесь продуктами для анализа проводных данных, такими как ExtraHop, Dynatrace или LANGuardian. Преимущество здесь в том, что вы видите фактические реализации TLS в использовании. Маловероятно, что одна из реализаций сломана, но возможно.

Что касается сертификатов, OpenSSL - не единственная игра в городе, любая операционная система, в которой вы можете использовать сертификат, будет иметь утилиты для их запроса. Модуль PowerShell pki удобен тем, что вы можете фильтровать или просматривать любые или все свойства.

Оба сертификата могут быть полностью идентичными (без серийного номера и даты выдачи), но один работает успешно, а другой - нет. Это может быть связано с тем, что серийный номер другого сертификата указан в CRL (списке отзыва сертификатов).

Из Википедия:

Список отозванных сертификатов (или CRL) - это «список цифровых сертификатов, которые были отозваны выпускающим центром сертификации (ЦС) до запланированной даты истечения срока их действия и больше не заслуживают доверия.