Ich betreibe einen https-Proxy, der SSL abfängt, und ich habe das Problem gelöst, also werde ich es aufzeichnen. Die zu verwendende Umgebung ist die folgende, die beim letzten Mal erstellt wurde. ** Proxy mit Active Directory-Verknüpfung und SSL-Abfangen mit Squid mit Docker einfach erstellen **
Beim Versuch, eine Verbindung zur folgenden Site herzustellen, tritt ein Fehler auf. https://learningnetwork.cisco.com/s/
Es scheint, dass ein Fehler aufgetreten ist, weil der Aussteller des Zertifikats unbekannt ist. Die Kette ist möglicherweise nicht gut nachvollziehbar.
Wenn Squid im Protokoll das Serverzertifikat empfängt, wird der Versuch verweigert, das fehlende CA-Zwischenzertifikat abzurufen. Aus diesem Grund scheint das Zertifikat nicht verifiziert werden zu können (= die Kette kann nicht verfolgt werden).
squid_access.log
TCP_DENIED/407 4118 CONNECT learningnetwork.cisco.com:443 - HIER_NONE/- text/html
TCP_DENIED/407 4488 CONNECT learningnetwork.cisco.com:443 - HIER_NONE/- text/html
NONE/200 0 CONNECT learningnetwork.cisco.com:443 PROSPER2\\USERNAME HIER_NONE/- -
TCP_DENIED/407 3616 GET http://trust.quovadisglobal.com/hydsslg2.crt - HIER_NONE/- text/html;charset=utf-8
TCP_MISS/503 7165 GET https://learningnetwork.cisco.com/s/jp-cln PROSPER2\\USERNAME HIER_DIRECT/161.71.178.161 text/html
squid_cache.log
kid1| ALE missing IDENT
kid1| ERROR: negotiating TLS on FD 23: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed (1/-1/0)
Es scheint, dass Tintenfisch 4 oder höher eine Funktion hat, die automatisch ein Zwischenzertifikat erhält. .. ..
Squid-4 is capable of downloading missing intermediate CA certificates, like popular browsers do.
Quelle: https://wiki.squid-cache.org/ConfigExamples/Intercept/SslBumpExplicit#Missing_intermediate_certificates
Wie Sie dem Protokoll entnehmen können, scheint es nicht zu funktionieren, da die Kommunikation mit der URL zum Abrufen des Zertifikats nicht zulässig ist.
Als ich das Zertifikat erhalten habe, scheint das CA-Zertifikat nicht angehängt zu sein, damit die Kette folgen kann.
# openssl s_client -connect learningnetwork.cisco.com:443 -showcerts | grep [si]:
depth=0 C = US, ST = California, L = San Jose, O = "Cisco Systems, Inc.", CN = learningnetwork.cisco.com
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 C = US, ST = California, L = San Jose, O = "Cisco Systems, Inc.", CN = learningnetwork.cisco.com
verify error:num=21:unable to verify the first certificate
verify return:1
0 s:C = US, ST = California, L = San Jose, O = "Cisco Systems, Inc.", CN = learningnetwork.cisco.com
i:C = US, O = HydrantID (Avalanche Cloud Corporation), CN = HydrantID SSL ICA G2
Auf dieser Seite ist die Kette richtig nachgezeichnet. .. ..
# openssl s_client -connect www.cisco.com:443 -showcerts | grep [si]:
depth=2 C = BM, O = QuoVadis Limited, CN = QuoVadis Root CA 2
verify return:1
depth=1 C = US, O = HydrantID (Avalanche Cloud Corporation), CN = HydrantID SSL ICA G2
verify return:1
depth=0 C = US, ST = California, L = San Jose, O = "Cisco Systems, Inc.", CN = www.cisco.com
verify return:1
0 s:C = US, ST = California, L = San Jose, O = "Cisco Systems, Inc.", CN = www.cisco.com
i:C = US, O = HydrantID (Avalanche Cloud Corporation), CN = HydrantID SSL ICA G2
1 s:C = US, O = HydrantID (Avalanche Cloud Corporation), CN = HydrantID SSL ICA G2
i:C = BM, O = QuoVadis Limited, CN = QuoVadis Root CA 2
Mit anderen Worten, es sollte möglich sein, ein CA-Zwischenzertifikat zu erhalten, das nicht erhalten werden konnte.
Fügen Sie die URL hinzu, um das Zwischenzertifikat zur Whitelist zu erhalten.
whitelist
^(https*://)*([^/][^/]*\.)*quovadisglobal\.com(:443|:80)*(/.*)*$
Speichern Sie das fehlende Zwischenzertifizierungsstellenzertifikat auf dem Squid-Server und geben Sie das Zertifikat als externe Zwischenzertifizierungsstelle an. Da das DER-Zertifikat nicht für Tintenfische (?) Verwendet werden kann, speichern Sie es als PEM.
# curl -L http://trust.quovadisglobal.com/hydsslg2.crt --output - | openssl x509 -inform DER > /etc/squid/certs/ca3rd/hydsslg2.crt
Geben Sie das in "squid.conf" erhaltene Zertifikat an.
squid.conf
sslproxy_foreign_intermediate_certs /etc/squid/certs/ca3rd/hydsslg2.crt
Jetzt können Sie es gut sehen.
Ich habe es unten als Referenz verwendet. Verwendung des Befehls openssl https://wiki.squid-cache.org/ConfigExamples/Intercept/SslBumpExplicit
Recommended Posts