HAProxy - ssl client ca chain kann nicht verifiziert werden

2

Lage:

Ich möchte, dass dies funktioniert: Anfragen kommen von Clients und gehen über den 443-Port (ssl) an Haproxy und müssen dann über den 80-Port an das Backend gesendet werden.

Ich habe ein Serverzertifikat, das von einem Zwischenzertifikat (ca1), ca1-Zertifikat und Clientzertifikat vergeben wird. ABER ich habe keine Lösung gefunden, um das richtige Serverzertifikat von der Windows-Zertifizierungsstelle beim Haproxy-Server (Ubuntu) anzufordern. kann an vorlagen liegen. Ich habe vom Windows-Computer ein Serverzertifikat angefordert und es auf Haproxy kopiert.

UND PROBLEM IST HAProxy-Protokoll haben diesen Fehler "SSL-Client-Kette kann nicht überprüft werden"

Konfigurations-Haproxy:

Frontend https_frontend

bind 192.168.14.167:443 ssl crt /etc/haproxy/cert/request/server.pem ca-datei /etc/haproxy/cert/request/ca1-certificate.pem überprüfe optional crt-ignore-err all no-sslv3

Modus http

log / dev / log local7

Option httplog

use_backend web_server_1 if {ssl_fc_has_crt}

default_backend web_server_2

Backend web_server_1

Modus http

Option httplog

Server w7 192.168.11.109:80 überprüfen

backend web_server_2

Modus http

Option httplog

Server XP 192.168.13.205:80 überprüfen

Dieses Schema funktioniert nicht.

zusätzliche info: log von winXP, wo ich opennssl ausgeführt habe

C: \ OpenSSL-Win32 \ bin> openssl s_client -connect haproxy2: 443 -cert client.pem -CAfile ca1-certificate.pem -state -showcerts

316: Fehler: 14094418: SSL-Routinen: SSL3_READ_BYTES: tlsv1-Warnung unbekannt ca:. \ Ssl \ s3_pkt.c: 1275: SSL-Warnungsnummer 48

316: Fehler: 140790E5: SSL-Routinen: SSL23_WRITE: SSL-Handshake-Fehler:. \ Ssl \ s23_lib.c: 184: ... cer info ... Rückgabecode überprüfen: 20 (lokales Ausstellerzertifikat kann nicht abgerufen werden)

(Entschuldigung für mein Englisch, wenn es schlecht ist) Ich habe viele Beiträge darüber gelesen, aber keine Lösung gefunden.

legeech
quelle

Antworten:

2

Die Dateien server.pem und client.pem sollten 3 Abschnitte enthalten und folgendermaßen aussehen:

-----BEGIN RSA PRIVATE KEY-----
<lots of base64 encoded data>
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
<lots of base64 encoded data>
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
<lots of base64 encoded data>
-----END CERTIFICATE-----

Der private Schlüssel ist möglicherweise nicht RSA, sollte jedoch der erste sein. Das erste Zertifikat ist das signierte Serverzertifikat. Das zweite Zertifikat sollte das CA-Zertifikat sein. Sie können jeden Abschnitt mit einem Texteditor kopieren und einfügen. Führen Sie dies aus, um Ihr Zertifikat zu überprüfen.

$ openssl verify -CAfile ca1-certificate.pem server.pem
server.pem: OK
erezny
quelle