Das SSL-Protokoll hat in der Tat einen Warncode für den Fall, dass die Zertifizierungsstelle unbekannt ist. Sie können ihn vermutlich mit etwas wie tshark erkennen.
Sinnvoller ist es jedoch, zu wissen, wie das Problem vermieden werden kann. Stellen Sie in Apache sicher, dass Sie die folgenden DREI Anweisungen haben:
SSLCertificateFile /etc/pki/tls/certs/myserver.cert
SSLCertificateKeyFile /etc/pki/tls/private/myserver.key
SSLCertificateChainFile /etc/pki/tls/certs/myserver.ca-bundle
Die Erweiterungen der Dateinamen sind für Apache nicht wirklich wichtig. In diesem Fall ist die SSLCertificateFile ein einzelnes X.509-Zertifikat mit dem Betreff des Servers, und die SSLCertificateChainFile ist eine Verkettung von Intermediate- und Root-CA-Zertifikaten (beginnend mit dem Root zuerst).
Hier ist ein nützliches Skript, mit dem Sie Zertifikatsketten in der PEM-Codierung untersuchen können.
#!/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)
}
'
(Dieses spezielle Skript wird auch für eine bestimmte XML-Anwendung verwendet. Dies sollen die sed-Bits in der Nähe des Starts unterstützen. Die interessanten Bits werden von gawk ausgeführt.)
Hier ist ein Beispiel, wie Sie es verwenden können (z. B. um festzustellen, ob die Zertifikate im CA-Bundle in der richtigen Reihenfolge sind - manchmal ist dies wichtig).
$ 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
Beachten Sie, wie der Aussteller eines Zertifikats neben dem Thema des Elternteils [unmittelbar unten] steht.
Hier ist ein weiteres Beispiel, wie Sie dieses Skript verwenden können, um eine lokale Datei zu überprüfen.
$ < /etc/pki/tls/certs/example.ca-bundle ssl-rfc-xargs openssl x509 -subject -issuer -noout