2 Zertifikatsprobleme

OpenSSL wird mit CRLs verwendet, und für einige CAs in der Zertifikatskette ist ihre CRL nicht in TLSCRLFile enthalten

Im TLS-Server-Log im Fall eines OpenSSL-Peers:

failed to accept an incoming connection: from 127.0.0.1: TLS handshake with 127.0.0.1 returned error code 1: \
    file s3_srvr.c line 3251: error:14089086: SSL routines:ssl3_get_client_certificate:certificate verify failed: \
    TLS write fatal alert "unknown CA"

Im TLS-Server-Log im Fall eines GnuTLS-Peers:

failed to accept an incoming connection: from 127.0.0.1: TLS handshake with 127.0.0.1 returned error code 1: \
    file rsa_pk1.c line 103: error:0407006A: rsa routines:RSA_padding_check_PKCS1_type_1:\
    block type is not 01 file rsa_eay.c line 705: error:04067072: rsa routines:RSA_EAY_PUBLIC_DECRYPT:paddin

CRL abgelaufen oder läuft während des Server-Betriebs ab

[OpenSSL]{.underline}, im Server-Log:

  • vor dem Ablauf:
<!-- -->
cannot connect to proxy "proxy-openssl-1.0.1e": TCP successful, cannot establish TLS to [[127.0.0.1]:20004]:\
    SSL_connect() returned SSL_ERROR_SSL: file s3_clnt.c line 1253: error:14090086:\
    SSL routines:ssl3_get_server_certificate:certificate verify failed:\
    TLS write fatal alert "certificate revoked"
  • nach dem Ablauf:
<!-- -->
cannot connect to proxy "proxy-openssl-1.0.1e": TCP successful, cannot establish TLS to [[127.0.0.1]:20004]:\
    SSL_connect() returned SSL_ERROR_SSL: file s3_clnt.c line 1253: error:14090086:\
    SSL routines:ssl3_get_server_certificate:certificate verify failed:\
    TLS write fatal alert "certificate expired"

Der Punkt hierbei ist, dass bei einer gültigen CRL ein widerrufenes Zertifikat als „certificate revoked“ gemeldet wird. Wenn die CRL abläuft, ändert sich die Fehlermeldung zu „certificate expired“, was ziemlich irreführend ist.

[GnuTLS]{.underline}, im Server-Log:

  • vor und nach dem Ablauf gleich:
<!-- -->
cannot connect to proxy "proxy-openssl-1.0.1e": TCP successful, cannot establish TLS to [[127.0.0.1]:20004]:\
      invalid peer certificate: The certificate is NOT trusted. The certificate chain is revoked.

Selbstsigniertes Zertifikat, unbekannte CA

[OpenSSL]{.underline}, im Log:

error:'self signed certificate: SSL_connect() set result code to SSL_ERROR_SSL: file ../ssl/statem/statem_clnt.c\
      line 1924: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed:\
      TLS write fatal alert "unknown CA"'

Dies wurde beobachtet, wenn das Server-Zertifikat versehentlich dieselbe Issuer- und Subject-Zeichenfolge hatte, obwohl es von einer CA signiert war. Issuer und Subject sind im CA-Zertifikat der obersten Ebene gleich, dürfen jedoch im Server-Zertifikat nicht gleich sein. (Dasselbe gilt für Proxy- und Agent-Zertifikate.)

Um zu prüfen, ob ein Zertifikat dieselben Issuer- und Subject-Einträge enthält, führen Sie Folgendes aus:

openssl x509 -in <yourcertificate.crt> -noout -text

Es ist zulässig, dass das Root-Zertifikat (oberste Ebene) identische Werte für Issuer und Subject hat.