Cari tahu berapa banyak browser yang menolak sertifikat SSL

11

Saya ingin mengetahui berapa banyak browser yang menolak sertifikat SSL kami ketika membuat permintaan HTTP ke server web kami. Kami menggunakan CA gratis yang sekarang tampaknya dikenali oleh sebagian besar browser modern, tetapi saya ingin mendapatkan beberapa nomor tanpa menguji kombinasi browser dan sistem operasi.

Saya mengerti bahwa browser memutuskan koneksi ketika verifikasi sertifikat gagal, jadi apakah ada cara bagi Apache untuk mendeteksi ini? Saya tidak berharap mendapatkan informasi diagnostik khusus - hanya fakta bahwa ada masalah sertifikat / SSL sudah cukup.

Mat
sumber
1
Saya ragu mungkin untuk melakukan ini dengan Apache, mungkin jauh lebih mudah dilakukan dengan meletakkan sesuatu seperti HAProxy di depan Apache.
Florin Asăvoaie
Protokol SSL memang memiliki bidang kode kesalahan, di mana pihak yang mengakhiri koneksi dapat menggunakan untuk memberi tahu ujung yang lain, mengapa koneksi dihentikan. Saya tidak tahu seberapa spesifik informasi di bidang itu, atau apakah itu berlaku untuk kasus khusus ini. Saya akan mengikuti pertanyaan ini, karena jawabannya mungkin bermanfaat bagi diri saya juga.
kasperd

Jawaban:

3

Protokol SSL memang memiliki kode peringatan ketika CA tidak dikenal ... Anda bisa mendeteksinya menggunakan sesuatu seperti tshark saya kira.

tetapi yang lebih bermanfaat adalah mengetahui bagaimana cara menghindari masalah. Di Apache, pastikan Anda memiliki TIGA arahan berikut:

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

Ekstensi yang diberikan ke nama file tidak terlalu penting bagi Apache. Dalam hal ini, SSLCertificateFile akan menjadi sertifikat X.509 tunggal dengan Subjek server, dan SSLCertificateChainFile akan menjadi gabungan dari sertifikat CA Menengah dan Root (mulai dengan root terlebih dahulu).

Berikut ini adalah skrip yang berguna untuk membantu mengeksplorasi rantai sertifikat dalam pengkodean 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)
    }
    '

(skrip khusus ini juga digunakan untuk aplikasi XML tertentu, yang dimaksudkan untuk mendukung bit sed awal; bit menarik dilakukan oleh gawk.)

Berikut ini adalah contoh bagaimana Anda dapat menggunakannya (seperti menentukan dalam sertifikat dalam bundel CA berada di urutan yang benar - kadang-kadang ini penting)

$ 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

Perhatikan bagaimana penerbit satu sertifikat berdekatan dengan subjek induk [tepat di bawah]

Berikut adalah contoh lain tentang bagaimana Anda dapat menggunakan skrip itu, untuk memeriksa file lokal.

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