Git sur Windows ne fonctionne pas avec la télécommande en raison de “le protocole SSL” erreurs
tl;dr
Git sur Windows cesse de se connecter à github parce que de mystérieux "le protocole SSL" erreurs. Halp!
La Question
Je suis du développement sur Windows, à l'aide d'un privé dépôt GitHub de commande de la source. Quand j'ai démarrer mon système, je suis en mesure d'accéder à la distance repo sans problème - pull
, push
, fetch
, etc. tous fonctionnent tout aussi bien.
Après un certain laps de temps(*), cela s'arrête, et j'obtiens l'erreur suivante:
fatal: impossible d'accéder à 'https://github.com/our-team/private-repo.git/': Inconnu SSL erreur de protocole dans le cadre de github.com:443
(*) La quantité de temps semble variable - j'ai vu aussi peu qu'une heure ou deux, jusqu'à une journée entière. Habituellement, après le retour du système de couchage, il semble être un problème, mais je ne sais pas si elle est causée par un temps de retard ou par le système de couchage.
Vérification via cURL, je reçois
λ curl -v "https://github.com/our-team/private-repo.git/"
* Trying 192.30.252.130...
* Connected to github.com (192.30.252.130) port 443 (#0)
* successfully set certificate verify locations:
* CAfile: C:\Program Files (x86)\Git\bin\curl-ca-bundle.crt
CApath: none
* TLSv1.0, TLS handshake, Client hello (1):
* Unknown SSL protocol error in connection to github.com:443
* Closing connection 0
curl: (35) Unknown SSL protocol error in connection to github.com:443
À l'aide de set GIT_CURL_VERBOSE=1
avec git pull
montre des informations similaires. Parfois, il réussit (voir ci-dessous), mais la plupart du temps, il échoue.
Note En Outre
Il y a un peu de la forme sporadique de la nature pour elle - parfois, je peux obtenir des demandes de réussir, mais une fois qu'il commence à exploser, il est généralement cassé 9 de 10 demandes ou plus.
Succès d'une demande cURL ressemble:
λ curl -v "https://github.com/our-team/private-repo.git/"
* Trying 192.30.252.130...
* Connected to github.com (192.30.252.130) port 443 (#0)
* successfully set certificate verify locations:
* CAfile: C:\Program Files (x86)\Git\bin\curl-ca-bundle.crt
CApath: none
* TLSv1.0, TLS handshake, Client hello (1):
* TLSv1.0, TLS handshake, Server hello (2):
* TLSv1.0, TLS handshake, CERT (11):
* TLSv1.0, TLS handshake, Server finished (14):
* TLSv1.0, TLS handshake, Client key exchange (16):
* TLSv1.0, TLS change cipher, Client hello (1):
* TLSv1.0, TLS handshake, Finished (20):
* TLSv1.0, TLS change cipher, Client hello (1):
* TLSv1.0, TLS handshake, Finished (20):
* SSL connection using TLSv1.0 /AES128-SHA
* Server 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
* start date: 2014-04-08 00:00:00 GMT
* expire date: 2016-04-12 12:00:00 GMT
* subjectAltName: github.com matched
* issuer: C=US; O=DigiCert Inc; OU=www.digicert.com; CN=DigiCert SHA2 Extended Validation Server CA
* SSL certificate verify ok.
> GET /our-team/private-repo.git/HTTP/1.1
> User-Agent: curl/7.41.0
> Host: github.com
> Accept: */*
>
< HTTP/1.1 301 Moved Permanently
< Server: GitHub.com
< Date: Mon, 11 May 2015 15:19:43 GMT
< Content-Type: text/html
< Content-Length: 178
< Location: https://github.com/our-team/private-repo/
< Vary: Accept-Encoding
< X-Served-By: 76f8aa18dab86a06db6e70a0421dc28c
<
<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx</center>
</body>
</html>
* Connection #0 to host github.com left intact
La Question
J'ai googlé un peu bon pour essayer de trouver cette (au cours de plusieurs semaines, donc je n'ai pas les liens), mais la plupart des suggestions semblent pointer les erreurs de certificat ou OpenSSL différences de version du /des bugs (ce qui ne serait pas sporadique comme ça autant que je sache).
Ce qui pourrait être la cause de cet échec, et comment puis-je le résoudre?
Logiciel Concerné:
λ git --version
git version 1.9.5.msysgit.1
λ curl --version
curl 7.41.0 (i386-pc-win32) libcurl/7.41.0 OpenSSL/0.9.8zf zlib/1.2.8
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smtp smtps telnet tftp
Features: AsynchDNS IPv6 Largefile SSPI Kerberos SPNEGO NTLM SSL libz
bonne idée! Il semblait être bien le même comportement. La plupart du temps, la boucle échouent. Quand il réussit enfin à la négociation SSL, il renvoie une erreur 404 (ce qui est normal, car c'est un privé repo et je ne suis pas envoyer des informations d'authentification via cURL). Si les symptômes semblent rester.
OriginalL'auteur Sean | 2015-05-11
Vous devez vous connecter pour publier un commentaire.
Curieusement, il s'avère que le problème est que l'ordinateur portable a été limitée en raison d'une faiblesse de l'alimentation. La station d'accueil que j'utilisais était branché dans une basse-ampli powersupply (3.3 A), qui, alors qu'il était compatible avec l'ordinateur portable, immédiatement donné un coup de pied dans une très fortement étranglé mode.
Apparemment, cela a ralenti tout assez que le handshake SSL n'était pas en mesure de terminer assez rapidement.
Nous enfin suivi vers le bas après la lecture d'un support de Dell post sur le forum ( http://en.community.dell.com/support-forums/laptop/f/3518/t/19363340 ), qui a discuté de la lenteur des questions. La seule solution était de changer l'alimentation.
J'avais aussi vécu cette lenteur, mais je ne pense pas que c'était lié. Nous avons échangé à un ampli de puissance d'alimentation pour le dock, et que tout allait bien à nouveau, et le SSL erreurs décrites ci-dessus s'en alla.
Merci pour les recherches sur cette question. Juste pour ajouter à la base de connaissances, je connaît les mêmes problèmes sur une machine qui n'avait intermittent charge lourde (j'ai eu un couple de machines virtuelles exécutant en arrière-plan). Parfois, la commande git push commandes ont été à l'échec (surtout si j'essayais de l'intérieur IntelliJ IDEA), parfois ils ont été un succès, mais il n'y a pas de raison évidente pour expliquer pourquoi. Après la lecture de votre explication, j'ai arrêté les machines virtuelles et découvert que les commandes réussi presque tout le temps. Vous auriez pensé que plus robuste SSL comms pourrait être mis en œuvre...
OriginalL'auteur Sean
Qui ressemble à une erreur qui pourrait résulter de la initiatives de sécurité prises après la Impasse attaque --
weakdh.org
--.Qui a abouti à la la suppression de certains algorithmes accepté dans un SSL/TLS transaction.
Noter que, comme indiqué dans "Ne peut pas communiquer en toute sécurité avec les pairs: aucun algorithme de chiffrement(s)", vous serez en mesure de passer le droit de chiffrement liste curl via git.
Avant cela, vous pouvez également essayer si le problème persiste lors de l'utilisation de la plus récente Git pour Windows (comme le Git 2.4.1)
OriginalL'auteur VonC
Eu le même problème. Désactivé ma connexion wifi et sont passés à câble et tout fonctionne à nouveau. Btw: Utilisé un Dell dans la station d'Accueil la Station de trop.
OriginalL'auteur pitgrap