पता करें कि कितने ब्राउज़र SSL प्रमाणपत्र को अस्वीकार करते हैं


11

मुझे यह पता लगाना है कि हमारे वेबसर्वर के लिए HTTP अनुरोध करते समय कितने ब्राउज़र हमारे SSL प्रमाणपत्र को अस्वीकार करते हैं। हम एक नि: शुल्क सीए का उपयोग कर रहे हैं, जो अब अधिकांश आधुनिक ब्राउज़रों द्वारा पहचाना जाने लगता है, लेकिन मैं कुछ संख्या में बिना ब्राउजर और ऑपरेटिंग सिस्टम के संयोजन के परीक्षण करना चाहता हूं।

मैं समझता हूं कि प्रमाणपत्र सत्यापन विफल होने पर ब्राउज़र कनेक्शन को समाप्त कर देता है, तो क्या अपाचे के पास इसका पता लगाने का कोई तरीका है? मुझे विशिष्ट नैदानिक ​​जानकारी प्राप्त करने की उम्मीद नहीं है - बस तथ्य यह है कि एक प्रमाण पत्र था / एसएसएल समस्या पर्याप्त है।


1
मुझे संदेह है कि अपाचे के साथ ऐसा करना संभव है, शायद अपाचे के सामने HAProxy जैसी चीज डालकर करना बहुत आसान है।
फ्लोरिन असावोई

एसएसएल प्रोटोकॉल में एक त्रुटि कोड फ़ील्ड होता है, जिसे कनेक्शन समाप्त करने वाला पक्ष दूसरे छोर को बताने के लिए उपयोग कर सकता है, कनेक्शन क्यों समाप्त किया गया था। मुझे नहीं पता कि उस क्षेत्र की जानकारी कितनी विशिष्ट है, या यदि यह इस विशिष्ट मामले के लिए भी लागू है। मैं इस सवाल का पालन करूंगा, क्योंकि यह उत्तर मेरे लिए भी उपयोगी साबित हो सकता है।
कैस्पर

जवाबों:


3

SSL प्रोटोकॉल वास्तव में CA के अज्ञात होने पर एक अलर्ट कोड है ... आप tshark I suppose जैसी किसी चीज़ का उपयोग करके इसका पता लगा सकते हैं।

लेकिन अधिक उपयोगी है कि समस्या से कैसे बचा जाए। अपाचे में, सुनिश्चित करें कि आपके पास निम्नलिखित निर्देश हैं:

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

फ़ाइल नाम के लिए दिए गए एक्सटेंशन वास्तव में अपाचे के लिए मायने नहीं रखते हैं। इस स्थिति में, 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 अनुप्रयोग के लिए भी किया जाता है, जो कि शुरुआत के पास वाली सीड बिट्स का समर्थन करने के लिए है, दिलचस्प बिट्स 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 Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.