Kaç tarayıcının SSL sertifikasını reddettiğini öğrenin


11

Web sunucumuza HTTP istekleri gönderirken kaç tarayıcının SSL sertifikamızı reddettiğini öğrenmek istiyorum. Şu anda çoğu modern tarayıcı tarafından tanınan ücretsiz bir CA kullanıyoruz, ancak tarayıcı ve işletim sistemlerinin kombinasyonlarını kapsamlı bir şekilde test etmeden bazı numaralar almak istiyorum.

Sertifika doğrulama başarısız olduğunda tarayıcının bağlantıyı sonlandırdığını anlıyorum, bu yüzden Apache'nin bunu tespit etmesinin bir yolu var mı? Belirli tanı bilgileri almayı beklemiyorum - sadece bir sertifika / SSL sorununun olması yeterlidir.


1
Apache ile bunu yapmak mümkün olduğundan şüpheliyim, muhtemelen Apache'nin önüne HAProxy gibi bir şey koyarak çok daha kolay.
Florin Asăvoaie

SSL protokolünde, bağlantıyı sonlandıran tarafın diğer tarafa, bağlantının neden sonlandırıldığını söylemek için kullanabileceği bir hata kodu alanı vardır. Bu alandaki bilgilerin ne kadar spesifik olduğunu veya bu özel durum için bile geçerli olup olmadığını bilmiyorum. Bu soruyu takip edeceğim, çünkü cevap kendim için de yararlı olabilir.
kasperd

Yanıtlar:


3

SSL protokolünün CA'nın bilinmediği zaman için bir uyarı kodu var ... Sanırım tshark gibi bir şey kullanarak bunu tespit edebilirsiniz.

ama daha yararlı bir şekilde sorunun nasıl önleneceğini bilmek. Apache'de, aşağıdaki ÜÇ yönergeye sahip olduğunuzdan emin olun:

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

Dosya adlarına verilen uzantılar Apache için gerçekten önemli değil. Bu durumda, SSLCertificateFile, sunucunun Konusu ile tek bir X.509 sertifikası ve SSLCertificateChainFile, Ara ve Kök CA sertifikalarının bir birleşimi olacaktır (kökten başlayarak).

PEM kodlamasındaki sertifika zincirlerini keşfetmeye yardımcı olan kullanışlı bir komut dosyası.

#!/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)
    }
    '

(bu özel komut dosyası, belirli bir XML uygulaması için de kullanılır; bu, başlangıçtaki sed bitlerinin desteklemeyi amaçladığı şeydir; ilginç bitler gawk tarafından yapılır.)

İşte bunu nasıl kullanabileceğinize bir örnek (CA paketindeki sertifikalarda doğru sırayla belirlemek - bazen bu önemlidir)

$ 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

Bir sertifikayı verenin üst konuya nasıl bitişik olduğuna dikkat edin [hemen aşağıda]

Yerel bir dosyayı incelemek için bu komut dosyasını nasıl kullanabileceğinize ilişkin başka bir örnek.

$ < /etc/pki/tls/certs/example.ca-bundle ssl-rfc-xargs openssl x509 -subject -issuer -noout
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.