Дізнайтеся, скільки браузерів відхиляє сертифікат 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.