Tìm hiểu có bao nhiêu trình duyệt từ chối chứng chỉ SSL


11

Tôi muốn tìm hiểu có bao nhiêu trình duyệt từ chối chứng chỉ SSL của chúng tôi khi thực hiện các yêu cầu HTTP đến máy chủ web của chúng tôi. Chúng tôi đang sử dụng một CA miễn phí dường như được hầu hết các trình duyệt hiện đại nhận ra, nhưng tôi muốn nhận được một số số mà không cần kiểm tra toàn diện các kết hợp trình duyệt và hệ điều hành.

Tôi hiểu rằng trình duyệt chấm dứt kết nối khi xác minh chứng chỉ không thành công, vậy có cách nào để Apache phát hiện ra điều này không? Tôi không mong đợi nhận được thông tin chẩn đoán cụ thể - chỉ cần có một vấn đề về chứng chỉ / SSL là đủ.


1
Tôi nghi ngờ có thể làm điều này với Apache, có lẽ dễ thực hiện hơn bằng cách đặt một cái gì đó như HAProxy trước Apache.
Florin Asăvoaie

Giao thức SSL không có trường mã lỗi, mà bên chấm dứt kết nối có thể sử dụng để nói với đầu bên kia, tại sao kết nối bị chấm dứt. Tôi không biết thông tin cụ thể trong lĩnh vực đó như thế nào, hoặc nếu nó thậm chí có thể áp dụng cho trường hợp cụ thể này. Tôi sẽ làm theo câu hỏi này, vì câu trả lời cũng có thể hữu ích cho bản thân tôi.
kasperd

Câu trả lời:


3

Giao thức SSL thực sự có mã cảnh báo khi CA không xác định ... bạn có thể phát hiện ra nó bằng cách sử dụng cái gì đó như tshark tôi cho là.

nhưng hữu ích hơn là biết cách tránh vấn đề. Trong Apache, đảm bảo bạn có BA lệnh sau:

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

Các phần mở rộng được cung cấp cho tên tệp không thực sự quan trọng đối với Apache. Trong trường hợp này, SSLCertertFile sẽ là một chứng chỉ X.509 duy nhất với Chủ đề của máy chủ và SSLCertertChainFile sẽ là một chứng chỉ CA trung gian và gốc CA (bắt đầu bằng root trước).

Đây là một tập lệnh hữu ích để giúp khám phá các chuỗi chứng chỉ trong mã hóa 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)
    }
    '

(tập lệnh cụ thể này cũng được sử dụng cho một ứng dụng XML cụ thể, đó là ý nghĩa của các bit sed gần đầu để hỗ trợ; các bit thú vị được thực hiện bởi gawk.)

Đây là một ví dụ về cách bạn có thể sử dụng nó (chẳng hạn như để xác định trong các chứng chỉ trong gói CA theo đúng thứ tự - đôi khi vấn đề này)

$ 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

Lưu ý cách người phát hành một chứng chỉ liền kề với chủ đề của cha mẹ [ngay bên dưới]

Đây là một ví dụ khác về cách bạn có thể sử dụng tập lệnh đó để kiểm tra tệp cục bộ.

$ < /etc/pki/tls/certs/example.ca-bundle ssl-rfc-xargs openssl x509 -subject -issuer -noout
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.