Découvrez combien de navigateurs rejettent le certificat SSL

11

Je voudrais savoir combien de navigateurs rejettent notre certificat SSL lors des demandes HTTP à notre serveur Web. Nous utilisons une autorité de certification gratuite qui semble maintenant être reconnue par la plupart des navigateurs modernes, mais j'aimerais obtenir quelques chiffres sans tester de manière exhaustive les combinaisons de navigateurs et de systèmes d'exploitation.

Je comprends que le navigateur met fin à la connexion lorsque la vérification du certificat échoue. Existe-t-il un moyen pour Apache de détecter cela? Je ne m'attends pas à obtenir des informations de diagnostic spécifiques - le simple fait qu'il y ait eu un problème de certificat / SSL suffit.

Mat
la source
1
Je doute qu'il soit possible de faire cela avec Apache, probablement beaucoup plus facile à faire en mettant quelque chose comme HAProxy devant Apache.
Florin Asăvoaie
Le protocole SSL possède un champ de code d'erreur que la partie qui met fin à la connexion peut utiliser pour indiquer à l'autre extrémité pourquoi la connexion a été interrompue. Je ne sais pas à quel point les informations dans ce domaine sont spécifiques, ni si elles s'appliquent même à ce cas spécifique. Je suivrai cette question, car la réponse peut également s’avérer utile.
kasperd

Réponses:

3

Le protocole SSL a en effet un code d'alerte pour quand l'AC est inconnue ... vous pouvez le détecter en utilisant quelque chose comme tshark je suppose.

mais plus utile est de savoir comment éviter le problème. Dans Apache, assurez-vous que vous disposez des TROIS directives suivantes:

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

Les extensions données aux noms de fichiers n'ont pas vraiment d'importance pour Apache. Dans ce cas, le SSLCertificateFile sera un seul certificat X.509 avec le sujet du serveur, et le SSLCertificateChainFile sera une concaténation des certificats d'autorité de certification intermédiaire et racine (en commençant par la racine en premier).

Voici un script utile pour vous aider à explorer les chaînes de certificats dans l'encodage 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)
    }
    '

(ce script particulier est également utilisé pour une application XML particulière, ce que les bits sed près du début sont censés prendre en charge; les bits intéressants sont effectués par gawk.)

Voici un exemple de la façon dont vous pouvez l'utiliser (par exemple, pour déterminer dans les certificats du bundle CA sont dans le bon ordre - parfois cela importe)

$ 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

Remarquez comment l'émetteur d'un seul certificat est adjacent au sujet du parent [immédiatement ci-dessous]

Voici un autre exemple de la façon dont vous pouvez utiliser ce script pour inspecter un fichier local.

$ < /etc/pki/tls/certs/example.ca-bundle ssl-rfc-xargs openssl x509 -subject -issuer -noout
Cameron Kerr
la source