13 votes

L'OCSP responder n'est pas présent ?

Je suis en train de mettre en place des routines de validation OCSP et je veux donc être à l'aise avec l'environnement en premier. J'ai trouvé d'excellents tutoriels par exemple sur OpenSSL: Vérifier manuellement un certificat contre un OCSP.

Plusieurs questions se posent, donc veuillez me pardonner.

Il y a eu quelques changements depuis ce tutoriel, mais je pense que l'essentiel est le suivant :

1) obtenir le certificat que vous voulez vérifier, par exemple

openssl s_client -connect wikipedia.org:443 2>&1 < /dev/null | sed -n '/-----BEGIN/,/-----END/p' > wikipedia.pem

2) construire la chaîne de certificats, par exemple

openssl s_client -connect wikipedia.org:443 -showcerts 2>&1 < /dev/null > chain.pem

et ensuite modifier si nécessaire. J'ai remarqué que ce qui précède ne fournit pas le certificat CA auto-signé, GlobalSignRootCA, donc je l'ai ajouté.

3) Déterminer l'URI de l'ocsp, par exemple

openssl x509 -noout -ocsp_uri -in wikipedia.pem 

qui renvoie

http://ocsp2.globalsign.com/gsorganizationvalsha2g2

4) Appeler le client openssl ocsp, par exemple

openssl ocsp -issuer chain.pem -cert wikipedia.pem -url http://ocsp2.globalsign.com/gsorganizationvalsha2g2

qui renvoie

[woody@oc2042275410 testCerts]$ openssl ocsp -issuer chain.pem -cert wikipedia.pem -url http://ocsp2.globalsign.com/gsorganizationvalsha2g2
Error querying OCSP responsder
140062843348808:error:27076072:OCSP routines:PARSE_HTTP_LINE1:server response error:ocsp_ht.c:250:Code=403,Reason=Forbidden

(responsder ?)

J'ai lu que cela est dû à un problème de virtualisation, donc

openssl ocsp -issuer chain.pem -cert wikipedia.pem -url http://ocsp2.globalsign.com/gsorganizationvalsha2g2 -header "HOST" "ocsp2.globalsign.com"

ce qui renvoie

Échec de la vérification de la réponse
140400906352456:error:27069065:OCSP routines:OCSP_basic_verify:certificate verify error:ocsp_vfy.c:126:Erreur de vérification: impossible d'obtenir le certificat émetteur local
wikipedia.pem: bon
    Cette mise à jour : le 28 avril 2015 à 23h10 GMT
    Prochaine mise à jour : le 29 avril 2015 à 11h10 GMT

Donc je comprends que l'OCSP a renvoyé que le certificat est bon, mais cela mène à la question 1 : pourquoi l'erreur 'impossible d'obtenir le certificat émetteur local' ?

D'accord, essayons à nouveau avec Google. Même routine, capture du certificat, vérification de l'URI de l'OCSP :

openssl x509 -noout -ocsp_uri -in google.pem 

renvoie

http://clients1.google.com/ocsp.

Très bien :

openssl ocsp -issuer gchain.pem -cert google.pem -url http://clients1.google.com/ocsp
Error querying OCSP responsder
140433209165640:error:27076072:OCSP routines:PARSE_HTTP_LINE1:server response error:ocsp_ht.c:250:Code=404,Reason=Not Found

Pas trouvé ? Cela semblait surprenant. Vérifions avec Wireshark :

> POST /ocsp HTTP/1.0
> Content-Type: application/ocsp-request
> Content-Length: 112

> 0n0l0E0C0A0...+..........j.....p.I.#z...(~d...U.. [.5...J:.......l..9.....{6.#0!0...+.....0......].O.9..}d`.L...
< ~HTTP/1.0 404 Not Found
< Content-Type: text/html; charset=UTF-8
< X-Content-Type-Options: nosniff
< Date: Tue, 28 Apr 2015 22:42:40 GMT
< Server: sffe
< Content-Length: 1429
< X-XSS-Protection: 1; mode=block
< Alternate-Protocol: 80:quic,p=1
< 
< 
< 
<   
<   
<   Error 404 (Not Found)!!1
<   
<     *{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}* > body{background:url(//www.google.com/images/errors/robot.png) 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}a img{border:0}@media screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0}}#logo{background:url(//www.google.com/images/errors/logo_sm_2.png) no-repeat}@media only screen and (min-resolution:192dpi){#logo{background:url(//www.google.com/images/errors/logo_sm_2_hr.png) no-repeat 0% 0%/100% 100%;-moz-border-image:url(//www.google.com/images/errors/logo_sm_2_hr.png) 0}}@media only screen and (-webkit-min-device-pixel-ratio:2){#logo{background:url(//www.google.com/images/errors/logo_sm_2_hr.png) no-repeat;-webkit-background-size:100% 100%}}#logo{display:inline-block;height:55px;width:150px}
<   
<   
<   404. C'est... une erreur.
<   

Donc, c'est la question 2 : est-ce correct, l'OCSP a été déplacé et n'est pas présent à l'URI de l'OCSP ? Est-ce peut-être que le serveur est passé uniformément au mandat d'OCSP, et ne considère plus l'OCSP comme important ?

6voto

Ismail Moghul Points 193

Concernant 1)

OCSP dispose d'une paire de "clé/certificat de signature de réponse" utilisée pour authentifier la réponse. Ce certificat est donné dans la réponse à :

$ openssl ocsp -issuer chain.pem -cert wikipedia.pem -url http://ocsp2.globalsign.com/gsorganizationvalsha2g2 -header "HOST" "ocsp2.globalsign.com" -resp_text
-----BEGIN CERTIFICATE-----
[...]
UMiqxBNugzQ=
-----END CERTIFICATE-----

Enregistrons donc cela dans signcert.pem et voyons ce qu'il en est :

$ openssl ocsp -issuer chain_wikipedia.pem -cert wikipedia.pem -url http://ocsp2.globalsign.com/gsorganizationvalsha2g2 -header "HOST" "ocsp2.globalsign.com" -resp_text | sed -n '/-----BEGIN/,/-----END/p' > signcert.pem
$ openssl verify signcert.pem
signcert.pem: C = BE, O = GlobalSign nv-sa, CN = GlobalSign OV CA - SHA256 - G2 OCSP responder - 2, serialNumber = 20150914163800
erreur 20 lors de la recherche dans la profondeur 0 : impossible d'obtenir un certificat émetteur local

D'accord... On dirait qu'il nous manque l'intermédiaire ?

$ openssl x509 -noout -text -in signcert.pem  | grep -e 'Issuer:' -e '.crt'
Emetteur: C=BE, O=GlobalSign nv-sa, CN=GlobalSign Organization Validation CA - SHA256 - G2

D'accord, aucun champ d'URI émetteur... C'est juste sale. Allons le chercher auprès de l'AC et formons une chaîne :

$ curl https://secure.globalsign.com/cacert/gsorganizationvalsha2g2r1.crt | openssl x509 -inform der -outform pem >> signcert.pem

D'accord, cela devrait fon... :

$ openssl ocsp -VAfile signcert.pem -issuer chain_wikipedia.pem -cert wikipedia.pem -url http://ocsp2.globalsign.com/gsorganizationvalsha2g2 -header "HOST" "ocsp2.globalsign.com" -resp_text
[...]
-----BEGIN CERTIFICATE-----
[...]
/TiSgNCpgNg=
-----END CERTIFICATE-----
Echec de la vérification de la réponse

... WTF ?! Oh, certificat de signature différent ?!

$ cat >> signcert.pem
-----BEGIN CERTIFICATE-----
MIID9DCCAtygAwIBAgISESEjxqkycL2lZt0CfS9OgUN2MA0GCSqGSIb3DQEBCwUA
MGYxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTwwOgYD
VQQDEzNHbG9iYWxTaWduIE9yZ2FuaXphdGlvbiBWYWxpZGF0aW9uIENBIC0gU0hB
MjU2IC0gRzIwHhcNMTUwODIwMTgxOTQxWhcNMTUxMTIwMTgxOTQxWjB9MQswCQYD
VQQGEwJCRTEZMBcGA1UEChMQR2xvYmFsU2lnbiBudi1zYTE6MDgGA1UEAxMxR2xv
YmFsU2lnbiBPViBDQSAtIFNIQTI1NiAtIEcyIE9DU1AgcmVzcG9uZGVyIC0gMTEX
MBUGA1UEBRMOMjAxNTA4MjAyMDE4MDAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
ggEKAoIBAQC+8xxGkIda/04pKK3AXuLz8S8EH4qouLbP/lrd+DFY1oI8fU4kosO+
WjvBPMeK1ZvvR6YjcNhIRsoYsDWdvhMv8/qvu1GQBrs1oC2910lg3fGIR48LR6TR
+XYC1jFv0IHaF5vp+e2nu3diJi7FKHMbP5jVdd1e6cuEcrq+pEW7WkPDQnhzh6U/
GGdhxbH8uk4KPH42Os0Rf6la99EyXzJZ8zccy0ySGnIOF5Km1efXg0qwx3PEk3MQ
fbFG3n4zE7lwBsrEgACI+V9K50tWfJIAm8Ll/xpGhvqF+6swCr0WExMcqaNpdVsf
hiHFD18k8v4R6t7ht+cWx1YvSSA+/hz3AgMBAAGjgYQwgYEwCQYDVR0TBAIwADAO
BgNVHQ8BAf8EBAMCB4AwEwYDVR0lBAwwCgYIKwYBBQUHAwkwDwYJKwYBBQUHMAEF
BAIFADAdBgNVHQ4EFgQU8haQnheoUW3t3+j0OaxZMUgEjIkwHwYDVR0jBBgwFoAU
lt5h8b0cFilTHMDMfTuDAEDmGnwwDQYJKoZIhvcNAQELBQADggEBAH0MXy5hmHXc
G88ntZ2YcM3C6AAVqpfZ2+KYwL06cjmAFvNx6nWUN2w5MD59fiQC3DENCvlEGe29
d9+zsPM4hwEVRGKBIDueXycI0BNRAViacaks4OqRcc8gi1SBE5j94yt1kfp6VBhc
yQBU4Cg5UBy4OA3SsnYdt/Ur1Xm+BDlpi5WWROM1O5UECquLU3/P1prxF78EkTdv
OSGtP1VLMS47hk5v+sUC3hnfwUyKnr2oiVV6CvxxLOipdeDGl68dVisauNf7Dp9H
YvO8OLkN9es+R2AV5iFIzLWHjsQxLOrY18bi6N0zMP7tuZIRSVpil+b49KJ8T/e1
/TiSgNCpgNg=
-----END CERTIFICATE-----
^D

Les doigts croisés...

$ openssl ocsp -VAfile signcert.pem -issuer chain_wikipedia.pem -cert wikipedia.pem -url http://ocsp2.globalsign.com/gsorganizationvalsha2g2 -header "HOST" "ocsp2.globalsign.com"
Vérification de la réponse OK
wikipedia.pem : bonne
        Cette mise à jour : Sep 15 17:01:20 2015 GMT
        Prochaine mise à jour : Sep 16 05:01:20 2015 GMT

Ouais !

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X