Дізнайтеся, скільки браузерів відхиляє сертифікат SSL


11

Я хотів би дізнатися, скільки браузерів відхиляє наш сертифікат SSL під час подання HTTP-запитів на наш веб-сервер. Ми використовуємо безкоштовний CA, який зараз, здається, визнаний більшістю сучасних браузерів, але я хотів би отримати деякі цифри без вичерпного тестування комбінацій браузерів та операційних систем.

Я розумію, що браузер припиняє з'єднання, коли перевірка сертифікату не вдається, тож чи є Apache спосіб виявити це? Я не сподіваюся отримати конкретну діагностичну інформацію - достатньо лише того факту, що виникла проблема з сертифікатом / SSL.


1
Я сумніваюся, що це можливо зробити з Apache, можливо, це набагато простіше зробити, поставивши щось подібне HAProxy перед Apache.
— Флорін Асвойае

Протокол SSL має поле коду помилки, яке сторона, що припиняє з'єднання, може використовувати для того, щоб повідомити інший кінець, чому з'єднання було припинено. Я не знаю, наскільки конкретна інформація в цьому полі, чи вона навіть застосовна для цього конкретного випадку. Я буду дотримуватися цього питання, оскільки відповідь може виявитися корисною і для мене.
— kasperd

Відповіді:


3

Протокол SSL дійсно має код оповіщення, коли CA невідомий ... ви могли його виявити, використовуючи щось на кшталт tshark.

але корисніше - це знати, як уникнути проблеми. В Apache переконайтеся, що у вас є ТРИ директиви:

SSLCertificateFile /etc/pki/tls/certs/myserver.cert
SSLCertificateKeyFile /etc/pki/tls/private/myserver.key
SSLCertificateChainFile /etc/pki/tls/certs/myserver.ca-bundle

Розширення, надані для назви файлів, Apache насправді не мають значення. У цьому випадку SSLCertificateFile буде єдиним сертифікатом X.509 з темою сервера, а SSLCertificateChainFile буде об'єднанням проміжних та кореневих сертифікатів CA (починаючи з кореня спочатку).

Ось корисний сценарій для вивчення ланцюгів сертифікатів у кодуванні PEM.

#!/bin/bash
#
# For an input of concatenated PEM ("rfc style") certificates, and a
# command-line consisting of a command to run, run the command over each PEM
# certificate in the file. Typically the command would be something like
# 'openssl x509 -subject -issuer'.
#
# Example:
#
#    ssl-rfc-xargs openssl x509 -subject -issuer -validity -modulus -noout < mynewcert.pem
#
sed -e 's/^[ \t]*<ds:X509Certificate>\(.*\)$/-----BEGIN CERTIFICATE-----\n\1/' \
    -e 's/^[ \t]*<\/ds:X509Certificate>[ \t]*$/-----END CERTIFICATE-----\n/' \
    -e 's/^\(.*\)<\/ds:X509Certificate>[ \t]*$/\1\n-----END CERTIFICATE-----\n/' \
| gawk -vcommand="$*" '
    /^-----BEGIN /,/^-----END / {
        print |& command
    }
    /^-----END / {
        while ((command |& getline results) > 0) {
             print results
        }
        close(command)
    }
    '

(Цей конкретний скрипт також використовується для конкретного додатка XML, саме для цього слід підтримувати біти sed біля початку; цікаві біти виконуються gawk.)

Ось приклад того, як ви можете ним користуватися (наприклад, для визначення в сертифікатах у комплекті CA у правильному порядку - іноді це має значення)

$ openssl s_client -connect google.com:443 -showcerts </dev/null 2>&1 | ssl-rfc-xargs openssl x509 -subject -issuer -noout
subject= /C=US/ST=California/L=Mountain View/O=Google Inc/CN=google.com
issuer= /C=US/O=Google Inc/CN=Google Internet Authority G2
subject= /C=US/O=Google Inc/CN=Google Internet Authority G2
issuer= /C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
subject= /C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
issuer= /C=US/O=Equifax/OU=Equifax Secure Certificate Authority

Зверніть увагу, як видавець одного одного сертифіката суміжний із темою батьків [одразу нижче]

Ось ще один приклад того, як ви можете використовувати цей сценарій для огляду локального файлу.

$ < /etc/pki/tls/certs/example.ca-bundle ssl-rfc-xargs openssl x509 -subject -issuer -noout
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.