J'utilise un proxy https qui intercepte ssl, et j'ai résolu le problème, je vais donc l'enregistrer. L'environnement à utiliser est le suivant qui a été créé la dernière fois. ** Créez facilement un proxy avec liaison Active Directory et interception SSL avec squid avec docker **
Une erreur se produit lors de la tentative de connexion au site suivant. https://learningnetwork.cisco.com/s/
Il semble qu'une erreur se soit produite car l'émetteur du certificat est inconnu. La chaîne peut ne pas être bien tracée.
En regardant le journal, lorsque squid reçoit le certificat du serveur, il est REFUSÉ d'essayer d'obtenir le certificat CA intermédiaire manquant. Pour cette raison, il semble que le certificat ne puisse pas être vérifié (= la chaîne ne peut pas être tracée).
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)
Il semble que squid 4 ou version ultérieure a une fonction qui obtient automatiquement un certificat intermédiaire. .. ..
Squid-4 is capable of downloading missing intermediate CA certificates, like popular browsers do.
Source: https://wiki.squid-cache.org/ConfigExamples/Intercept/SslBumpExplicit#Missing_intermediate_certificates
Comme vous pouvez le voir dans le journal, cela ne semble pas fonctionner car la communication avec l'URL pour obtenir le certificat n'est pas autorisée.
Lorsque j'ai reçu le certificat, il semble que le certificat CA ne soit pas attaché afin que la chaîne puisse suivre.
# 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
De ce côté, la chaîne est correctement tracée. .. ..
# 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
En d'autres termes, il devrait être possible d'obtenir un certificat CA intermédiaire qui n'a pas pu être obtenu.
Ajoutez l'URL pour obtenir le certificat intermédiaire dans la liste blanche.
whitelist
^(https*://)*([^/][^/]*\.)*quovadisglobal\.com(:443|:80)*(/.*)*$
Stockez le certificat CA intermédiaire manquant dans le serveur squid et spécifiez le certificat en tant qu'autorité de certification intermédiaire externe. Étant donné que le certificat DER ne peut pas être utilisé pour squid (?), Stockez-le en tant que PEM.
# curl -L http://trust.quovadisglobal.com/hydsslg2.crt --output - | openssl x509 -inform DER > /etc/squid/certs/ca3rd/hydsslg2.crt
Spécifiez le certificat obtenu dans squid.conf
.
squid.conf
sslproxy_foreign_intermediate_certs /etc/squid/certs/ca3rd/hydsslg2.crt
Maintenant, vous pouvez bien le voir.
Je l'ai utilisé comme référence ci-dessous. Comment utiliser la commande openssl https://wiki.squid-cache.org/ConfigExamples/Intercept/SslBumpExplicit
Recommended Posts