git problema a través de https: rutinas: SSL23_GET_SERVER_HELLO

Hice mi propio server git en una distribución de centos. Puedo contactar al server a través del protocolo git en mi casa. Pero cuando bash acceder a través de https en la oficina obtengo:

Clonando en / Users / vito / Documents / … error: error: 14077458: rutinas SSL: SSL23_GET_SERVER_HELLO: reason (1112) al acceder a https: //gitolite@myserverxyz.com/vitorepo.git/info/refs

fatal: la request HTTP falló

¿Dónde está el problema? En mi server o en mi oficina-mac?

Obtuve la misma respuesta exacta de curl cuando trato de conectarme con una instancia de ubuntu que ejecuta openssl 1.0.0e. Resolví el problema con éxito agregando el distintivo -ssl3 al command curl.

Parece que es un problema de compatibilidad entre la versión anterior de OpenSSL (0.9.8) que actúa como cliente y la versión reciente de OpenSSL (1.0.0) que actúa como un server con algunas opciones específicas utilizadas por Curl en el lado del cliente y Apache en el lado del server.

Probablemente se deba a una corrección de security reciente en OpenSSL (probablemente la que está en contra de los ataques de degradación del protocolo).

Intente actualizar la versión de la biblioteca OpenSSL en el lado del cliente a la 1.0.0.

Ver:

https://sourceforge.net/tracker/?func=detail&atid=100976&aid=3395520&group_id=976

En caso de que alguien tenga este problema con XMLRPC.

La respuesta de Daniel (forzando SSL versión 3) resolvió el problema para mí. solo especifique XMLRPC_SSLVERSION_SSLv3 en las opciones clientXmlTransport_curl (C ++).

El problema comenzó cuando actualizamos nuestro server a OpenSSL versión 1.0.1-4ubuntu5.5 y los clientes seguían ejecutando 0.9.8o-5ubuntu1.7.

Creo que este es un problema de coincidencia de nombre de host en el server. El error 1112 es SSL_R_TLSV1_UNRECOGNIZED_NAME, y proviene de una discrepancia en el nombre de SNI ( información en SNI ). Estaba teniendo el mismo problema en Curl .

Para mí, el trabajo fue para asegurarme de que el nombre que utilicé en el cliente coincidía con una de las configuraciones ServerName o ServerAlias ​​en el server. Por supuesto, estos commands son para un server apache; No sé lo que tienes que hacer para un server de git. Pero sospecho que los nombres de server que está usando desde el hogar y el trabajo son diferentes, y el nombre de la casa es el nombre canónico que está usando el server de git (y, por lo tanto, SNI está funcionando).

El arreglo 'real' probablemente tomará un cambio de cliente en git para permitir una manera de ignorar la advertencia de desajuste de nombre (la forma en que su browser ya lo hace).

No estoy seguro si tuve exactamente el mismo problema, pero el post de error fue el mismo. Solo parecía estar sucediendo en el cuadro ubuntu en el que configuré un server git, por alguna razón el cents box con un server git configurado estaba bien.

Acabo de resolverlo después de 3 o 4 días. Resultó ser porque la biblioteca subyacente de Curl de git tiene una implementación interrumpida Keep-alive (terminé descargando el tráfico HTTP y verificando el comportamiento a mano).

En pocas palabras, Curl (al less la versión utilizada en cada implementación de Git que pude encontrar, incluyendo git de línea de command y EGit de eclipse) no parece interpretar correctamente el encabezado de respuesta de connection, o más correctamente no parece interpretar correctamente la ausencia de eso

Para solucionar el problema, debe configurar el server virtual SSL dentro del apache que está sirviendo su repository GIT con una directiva adicional específicamente para git. Agregue estas líneas justo antes de </ VirtualHost>.

BrowserMatch "git" nokeepalive ssl-unclean-shutdown 

Desafortunadamente, no puedes decirle a apache que simplemente cambie a HTTP / 1.0 (sería más limpio) porque Curl no puede manejar eso, pero puedes decirle que fuerce una connection: cierra cada request que Curl sepa cómo manejar.

En una coincidencia engañosa, si intentas probar Curl directamente sin este cambio, parecerá que funciona, porque hace una sola request y luego aborta. Solo haciendo que curl ejecute dos requestes en la misma connection keep-alive sobre ssl, este problema se hará evidente.

Yo tenía el mismo error. La causa raíz parece ser la incompatibilidad de las versiones de cliente / server openssl. Actualicé mi server con apt-get upgrade openssl y actualicé mi installation de Windows Git.

La combinación de Windows git version 1.9.4.msysgit.0 , que contiene la versión openssl: OpenSSL 0.9.8e 23 Feb 2007

Y server con la versión de openssl: OpenSSL 1.0.1c 10 May 2012

parece funcionar bien juntos.