J'essaie d'accéder aux référentiels de github en utilisant git fetch
mais j'obtiens cette erreur:
error: SSL: certificate subject name (*.opendns.com) does not match target Host name 'github.com' while accessing https://github.com/<repo name>
Cela s'est produit plus tôt cet après-midi très soudainement, et cela n'a pas disparu. Je pensais que le refus de Github d'anciennes versions d'OpenSSL pourrait poser problème.
Je suis sous Ubuntu 11.04 (Natty Narwhal), Git 1.7.4.1 et openssl version -a
donne ceci:
OpenSSL 0.9.8o 01 Jun 2010
built on: Tue May 22 23:20:32 UTC 2012
platform: debian-i386
options: bn(64,32) md2(int) rc4(idx,int) des(ptr,risc1,16,long) blowfish(idx)
compiler: cc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -
DHAVE_DLFCN_H -DL_ENDIAN -DTERMIO -O3 -Wa,--noexecstack -g -Wall
OPENSSLDIR: "/usr/lib/ssl"
Toute aide serait grandement appréciée!
MISE À JOUR 5/01/2014:
Nous avons mis à jour Ubuntu pour résoudre ce problème. Lisez quelque part que c'est la solution la plus sécurisée puisque ma machine locale et les serveurs de Github seront aussi à jour que possible l'un avec l'autre.
Vous devez modifier votre fichier /etc/resolv.conf et supprimer/remplacer toute référence aux serveurs OpenDNS. C’est ce que j’ai fait avec mon /etc/resolv.conf
Dans /etc/resolv.conf, remplacez
#OpenDNS
nameserver 208.67.222.222
nameserver 208.67.220.220
à
#Google
nameserver 8.8.8.8
nameserver 8.8.4.4
Faites-moi savoir si cela résout votre problème SSL.
Il suffit d'utiliser:
(CURLOPT_SSL_VERIFYPEER => 0, CURLOPT_SSL_VERIFYHOST => 0,)
dans votre appel curl
C'est probablement plus un commentaire, mais cela ne rentre pas dans le bloc de commentaires. Pour tester votre connexion SSL/TLS:
Commencez par aller à Certificats d'autorité racine de confiance DigiCert et téléchargez "Autorité de certification du serveur de validation étendue SHA2 DigiCert". Le nom de fichier est DigiCertSHA2ExtendedValidationServerCA.crt
.
Deuxièmement, convertissez le DER en PEM:
$ openssl x509 -inform DER -in DigiCertSHA2ExtendedValidationServerCA.crt
-outform PEM -out DigiCert-CA.pem
Troisièmement, utilisez le s_client
d'OpenSSL pour vérifier la connexion:
openssl s_client -connect github.com:443 -tls1 -servername github.com
-CAfile DigiCert-CA.pem -ign_eof
La chose à noter est le résultat de la vérification à la fin:
Verify return code: 0 (ok)
J'ai une Bad Request. Je soupçonne que c'est parce que j'ai demandé le document racine. Vous devriez brancher vos détails particuliers.
Enfin, vérifiez le nom d’hôte. OpenSSL antérieur à 1.0.2 n’effectue pas la vérification du nom d’hôte, vous devez donc parcourir les étapes supplémentaires:
$ openssl s_client -connect github.com:443 -tls1 -servername github.com
-CAfile DigiCert-CA.pem | openssl x509 -noout -text | grep "DNS:"
...
DNS:github.com, DNS:www.github.com
Au meilleur de ma connaissance, la vision SSL/TLS de ma vision du monde ne pose aucun problème. Il semble que le problème réside dans git
.
Vous pouvez vérifier le DNS avec nslookup
, mais je ne suis pas sûr que vous découvririez quelque chose d'utile:
$ nslookup
> set q=a
> github.com
Server: 172.16.1.10
Address: 172.16.1.10#53
Non-authoritative answer:
Name: github.com
Address: 192.30.252.129
$ echo "GET / HTTP/1.0\r\n" | openssl s_client -connect github.com:443 -tls1 -servername github.com -CAfile DigiCert-CA.pem -ign_eof
CONNECTED(00000003)
depth=2 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert High Assurance EV Root CA
verify return:1
depth=1 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert SHA2 Extended Validation Server CA
verify return:1
depth=0 businessCategory = Private Organization, 1.3.6.1.4.1.311.60.2.1.3 = US, 1.3.6.1.4.1.311.60.2.1.2 = Delaware, serialNumber = 5157550, street = 548 4th Street, postalCode = 94107, C = US, ST = California, L = San Francisco, O = "GitHub, Inc.", CN = github.com
verify return:1
---
Certificate chain
0 s:/businessCategory=Private Organization/1.3.6.1.4.1.311.60.2.1.3=US/1.3.6.1.4.1.311.60.2.1.2=Delaware/serialNumber=5157550/street=548 4th Street/postalCode=94107/C=US/ST=California/L=San Francisco/O=GitHub, Inc./CN=github.com
i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 Extended Validation Server CA
1 s:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 Extended Validation Server CA
i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance EV Root CA
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIF4DCCBMigAwIBAgIQDACTENIG2+M3VTWAEY3chzANBgkqhkiG9w0BAQsFADB1
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMTQwMgYDVQQDEytEaWdpQ2VydCBTSEEyIEV4dGVuZGVk
IFZhbGlkYXRpb24gU2VydmVyIENBMB4XDTE0MDQwODAwMDAwMFoXDTE2MDQxMjEy
MDAwMFowgfAxHTAbBgNVBA8MFFByaXZhdGUgT3JnYW5pemF0aW9uMRMwEQYLKwYB
BAGCNzwCAQMTAlVTMRkwFwYLKwYBBAGCNzwCAQITCERlbGF3YXJlMRAwDgYDVQQF
Ewc1MTU3NTUwMRcwFQYDVQQJEw41NDggNHRoIFN0cmVldDEOMAwGA1UEERMFOTQx
MDcxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
YW4gRnJhbmNpc2NvMRUwEwYDVQQKEwxHaXRIdWIsIEluYy4xEzARBgNVBAMTCmdp
dGh1Yi5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCx1Nw8r/3z
Tu3BZ63myyLot+KrKPL33GJwCNEMr9YWaiGwNksXDTZjBK6/6iBRlWVm8r+5TaQM
Kev1FbHoNbNwEJTVG1m0Jg/Wg1dZneF8Cd3gE8pNb0Obzc+HOhWnhd1mg+2TDP4r
bTgceYiQz61YGC1R0cKj8keMbzgJubjvTJMLy4OUh+rgo7XZe5trD0P5yu6ADSin
dvEl9ME1PPZ0rd5qM4J73P1LdqfC7vJqv6kkpl/nLnwO28N0c/p+xtjPYOs2ViG2
wYq4JIJNeCS66R2hiqeHvmYlab++O3JuT+DkhSUIsZGJuNZ0ZXabLE9iH6H6Or6c
JL+fyrDFwGeNAgMBAAGjggHuMIIB6jAfBgNVHSMEGDAWgBQ901Cl1qCt7vNKYApl
0yHU+PjWDzAdBgNVHQ4EFgQUakOQfTuYFHJSlTqqKApD+FF+06YwJQYDVR0RBB4w
HIIKZ2l0aHViLmNvbYIOd3d3LmdpdGh1Yi5jb20wDgYDVR0PAQH/BAQDAgWgMB0G
A1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjB1BgNVHR8EbjBsMDSgMqAwhi5o
dHRwOi8vY3JsMy5kaWdpY2VydC5jb20vc2hhMi1ldi1zZXJ2ZXItZzEuY3JsMDSg
MqAwhi5odHRwOi8vY3JsNC5kaWdpY2VydC5jb20vc2hhMi1ldi1zZXJ2ZXItZzEu
Y3JsMEIGA1UdIAQ7MDkwNwYJYIZIAYb9bAIBMCowKAYIKwYBBQUHAgEWHGh0dHBz
Oi8vd3d3LmRpZ2ljZXJ0LmNvbS9DUFMwgYgGCCsGAQUFBwEBBHwwejAkBggrBgEF
BQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMFIGCCsGAQUFBzAChkZodHRw
Oi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRTSEEyRXh0ZW5kZWRWYWxp
ZGF0aW9uU2VydmVyQ0EuY3J0MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQELBQAD
ggEBAG/nbcuC8++QhwnXDxUiLIz+06scipbbXRJd0XjAMbD/RciJ9wiYUhcfTEsg
ZGpt21DXEL5+q/4vgNipSlhBaYFyGQiDm5IQTmIte0ZwQ26jUxMf4pOmI1v3kj43
FHU7uUskQS6lPUgND5nqHkKXxv6V2qtHmssrA9YNQMEK93ga2rWDpK21mUkgLviT
PB5sPdE7IzprOCp+Ynpf3RcFddAkXb6NqJoQRPrStMrv19C1dqUmJRwIQdhkkqev
ff6IQDlhC8BIMKmCNK33cEYDfDWROtW7JNgBvBTwww8jO1gyug8SbGZ6bZ3k8OV8
XX4C2NesiZcLYbc2n7B9O+63M2k=
-----END CERTIFICATE-----
subject=/businessCategory=Private Organization/1.3.6.1.4.1.311.60.2.1.3=US/1.3.6.1.4.1.311.60.2.1.2=Delaware/serialNumber=5157550/street=548 4th Street/postalCode=94107/C=US/ST=California/L=San Francisco/O=GitHub, Inc./CN=github.com
issuer=/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 Extended Validation Server CA
---
No client certificate CA names sent
---
SSL handshake has read 3243 bytes and written 379 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
Protocol : TLSv1
Cipher : ECDHE-RSA-AES128-SHA
Session-ID: 9364E0346A77ABA5087FEEDA3C59443B1C672B6F553AB7183B9F48C2D3DE34CB
Session-ID-ctx:
Master-Key: 8B055C9CED9F517F7F3B1B49A4B517D478532503B3BB254BE4F11A2BD6445BE14444115797450604C6D6F17D169AA030
Key-Arg : None
PSK identity: None
PSK identity hint: None
SRP username: None
Start Time: 1398213115
Timeout : 7200 (sec)
Verify return code: 0 (ok)
---
HTTP/1.0 400 Bad request
Cache-Control: no-cache
Connection: close
Content-Type: text/html
<html><body><h1>400 Bad request</h1>
Your browser sent an invalid request.
</body></html>
closed
J'ai utilisé OpenDNS pendant des années et cela fonctionnait bien jusqu'à aujourd'hui. J'observe le même problème avec SSL & github comme décrit dans le premier post.
J'ai temporairement remplacé le serveur OpenDNS par GoogleDNS et github fonctionne bien. Cela isole le problème SSL sur OpenDNS ...
Au fait, je constate le même problème avec Ubuntu 12.04 et Debian 7.4, il n’est donc pas lié à 11.04 . Ubuntu 14.04 fonctionne très bien ...
Ubuntu 12.04.4: openssl s_client -connect github.com:443 -tls1 -servername github.com Reports: Vérifier le code retour: 20 (impossible d'obtenir le certificat de l'émetteur local)
La commande Hôte -t un github.com renvoie un des adresses 192.30.252.128, 192.30.252.129, 192.30.252.130 ou 192.30.252.131. Je ne vois pas de différence dans le comportement de github (résolveur OpenDNS utilisé).
wget sur Ubuntu 12.04.4 ne peut pas télécharger le certificat, c’est étrange:
$ wget -d https://www.digicert.com/CACerts/DigiCertSHA2ExtendedValidationServerCA.crt
DEBUG output created by Wget 1.13.4 on linux-gnu.
URI encoding = `UTF-8'
--2014-04-24 10:57:05-- https://www.digicert.com/CACerts/DigiCertSHA2ExtendedValidationServerCA.crt
Resolving www.digicert.com (www.digicert.com)... ::ffff:67.215.65.132, 64.78.193.234
Caching www.digicert.com => ::ffff:67.215.65.132 64.78.193.234
Connecting to www.digicert.com (www.digicert.com)|::ffff:67.215.65.132|:443... connected.
Created socket 3.
Releasing 0x099f77d8 (new refcount 1).
Initiating SSL handshake.
Handshake successful; connected socket 3 to SSL handle 0x099f7968
certificate:
subject: /C=US/ST=California/L=San Francisco/O=OpenDNS, Inc./CN=*.opendns.com
issuer: /C=US/O=DigiCert Inc/CN=DigiCert Secure Server CA
ERROR: no certificate subject alternative name matches
requested Host name `www.digicert.com'.
To connect to www.digicert.com insecurely, use `--no-check-certificate'.
Closed 3/SSL 0x099f7968
ce que votre passage peut ne pas avoir de certificat ssl, alors essayez simplement http://votredomaine.com au lieu de https://votredomaine.com
ça a fonctionné pour moi
Messagerie Internet uniquement, vous utilisez des réseaux Wi-Fi gratuits nécessitant une connexion Internet ..__ L’authentification Wi-Fi gratuite a peut-être expiré.
Le site de connexion utilise DDN pour rediriger votre demande vers opendns.com.
Ce que vous devez faire est simplement d'ouvrir n'importe quel site Web dans le navigateur Web et effectuer l'authentification.
Pour répondre à votre commentaire sur le remplacement de /etc/resolv.conf, vous devez utiliser l'outil resolveconf.
Supprimer les informations de résolveconf entrées lors de l'installation
$ Sudo resolvconf -d eth0.inet
Ajouter des informations sur l'hôte local
$ Sudo vim /etc/resolvconf/resolv.conf.d/base
ajouter:
nameserver 8.8.8.8
Mettre à jour resolvconf
$ Sudo resolvconf -u
Vérifier le résolveconf
$ cat /etc/resolv.conf
Devrait ressembler à:
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 8.8.8.8