Git en Windows no funciona con control remoto debido a errores de "protocolo SSL"

tl; dr

Git en Windows deja de conectarse a github debido a misteriosos errores del "protocolo SSL". ¡Halp!

La cuestión

Estoy desarrollando en Windows, usando un repository privado de GitHub para control de fuente. La primera vez que reinicio mi sistema, puedo acceder al repository remoto sin problemas – pull , push , fetch , etc. Todo funciona bien.

Después de un período de time (*), esto se detiene y aparece el siguiente error:

fatal: no se puede acceder a ' https://github.com/our-team/private-repo.git/ ': Error de protocolo SSL desconocido en relación con github.com:443

(*) La cantidad de time parece variable: he sido testigo de tan solo una o dos horas, hasta un día integer. Por lo general, después de regresar del sistema durmiendo, parece ser un problema, pero no sé si se debe a un retraso oa que el sistema duerme.

Comprobando a través de cURL, obtengo

 λ 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 

El uso del set GIT_CURL_VERBOSE=1 con git pull muestra información similar. A veces tiene éxito (ver más abajo), pero la mayoría de las veces falla.

Notas adicionales

Hay un poco de naturaleza esporádica: a veces puedo get requestes para tener éxito, pero una vez que comienza a explotar, generalmente se interrumpe en 9 de cada 10 requestes o más.

Una request de cURL exitosa se ve así:

 λ 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 pregunta

He buscado mucho en Google para encontrar esto (en el transcurso de varias semanas, así que no tengo enlaces), pero la mayoría de las sugerencias parecen apuntar a errores de certificates o errores / errores de la versión de OpenSSL (que no serían esporádico como este AFAIK).

¿Qué podría estar causando este error y cómo puedo resolverlo?

Software relevante:

 λ 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 

Curiosamente, resulta que el problema es que la computadora portátil se aceleró debido a una fuente de alimentación débil. La estación de acoplamiento que estaba usando estaba conectada a una fuente de alimentación de bajo amperaje (3.3 A), que, si bien era compatible con la computadora portátil, inmediatamente la puso en modo de aceleración acelerada.

Aparentemente, esto ralentizó todo lo suficiente como para que el protocolo de enlace SSL no se completara lo suficientemente rápido.

Finalmente lo rastreamos después de leer una publicación en el foro de soporte de Dell ( http://en.community.dell.com/support-forums/laptop/f/3518/t/19363340 ) que analizaba los problemas de lentitud. La solución allí era cambiar la fuente de alimentación.

También experimenté esta lentitud, pero no pensé que estuviera relacionada. Cambiamos a una fuente de alimentación de alto amperaje para el dock, y todo volvió a estar bien, y los errores SSL descritos anteriormente desaparecieron.

Parece un error que podría resultar de las iniciativas de security tomadas después del ataque de weakdh.orgweakdh.org – .
Eso resultó en la supresión de algunos encryptions aceptados en una transacción SSL / TLS .

Tenga en count que, como se informa en " No se puede comunicar de forma segura con el par: no hay algorithm (s) de encryption comunes ", podrá pasar la list de encryption correcta para cursarse a través de git.

Antes de eso, también puedes probar si el problema persiste al usar un Git para Windows más reciente (como el Git 2.4.1 )

Tenía el mismo problema. Desactivé mi connection wifi y cambié al cable y todo funciona nuevamente. Por cierto: Usé un Dell en la estación de acoplamiento también.