NGinx SSL-Zertifikat-Authentifizierung, signiert von Zwischen-CA (Kette)

Ich versuche, aktivieren Sie die client-Zertifikat-Authentifizierung in nginx, wo die Zertifikate signiert wurden, die von einer Zwischenzertifizierungsstelle. Ich bin in der Lage, dies funktioniert gut, wenn mit einem Zertifikat durch ein selbstsigniertes root-CA; dies gilt jedoch nicht, wenn das signierende CA intermediate CA.

Meine einfache server-Abschnitt sieht wie folgt aus:

server {
    listen       443;
    server_name  _;

    ssl                  on;
    ssl_certificate      cert.pem;
    ssl_certificate_key  cert.key;

    ssl_session_timeout  5m;

    ssl_protocols  SSLv2 SSLv3 TLSv1;
    ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
    ssl_prefer_server_ciphers   on;

    ssl_client_certificate ca.pem;
    ssl_verify_client on;
    ssl_verify_depth 1;

    location /{
        root   html;
        index  index.html index.htm;
    }
}

Für den Inhalt der ca.pem, ich habe versucht mit nur das intermediate-CA und auch die Verkettung der intermediate-CA-Zertifikat und das root-CA-cert, d.h. so etwas wie:

cp intermediate.crt ca.pem
cat root.crt >> ca.pem

Habe ich auch überprüft, ob das Zertifikat gültig von openssl ist die Perspektive, wenn mit dem gleichen CA-Kette:

openssl verify -CAfile /etc/nginx/ca.pem certs/client.crt 
certs/client.crt: OK

Habe ich experimentierte mit der Einstellung ssl_verify_depth explizit auf 1 (wie oben) und dann ist auch 0 (nicht sicher, was diese Zahl genau bedeutet), aber bekomme immer noch denselben Fehler.

Den Fehler bekomme ich in allen Varianten von intermed CA "400 Bad Request" und insbesondere "Das SSL-Zertifikat-Fehler" (nicht sicher, was das genau bedeutet).

Vielleicht nginx nur nicht unterstützt cert-Ketten für die zwischen-certs? Jede Hilfe sehr dankbar!

InformationsquelleAutor der Frage Hans L | 2011-12-08

Schreibe einen Kommentar