git - openssl ssl_read ssl_error_syscall errno 10054 laravel
OpenSSL errno 10054, conexión rechazada, al intentar conectarse a nuestro servidor (2)
Estamos ejecutando un servidor de git sobre https y no tuvimos problemas para conectarnos porque todos usamos Visual Studio para hacerlo. Ahora alguien quiere usar el estándar git bash y no puede conectarse con la siguiente salida de error.
fatal: unable to access ''https://server/Repo.git/'': Unknown SSL protocol error in connection to server:443
Intenté algunas cifradas diferentes, nada funcionó. Luego se me ocurrió que podría ser que git aún no sea compatible con los certificados ECDSA. Así que cambié el certificado ECDSA por uno con RSA. Eso tampoco funcionó.
Luego intenté conectarme con OpenSSL s_client con el siguiente comando:
OpenSSL> s_client -connect server:443
Este es el resultado de ejecutar el comando:
CONNECTED(0000018C)
write:errno=10054
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 307 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
---
Busqué en google el error número 10054
y encontré que significa que la conexión se rechazó. Usamos IIS 8.5 para suministrar el punto final https para el servidor git. Puedo conectarme al entorno web a través de todos los navegadores web y podemos usar el servidor git a través de la interfaz visual studio git. Entonces, no creo que sea un problema de firewall. Me gustaría saber si alguien ha experimentado este problema antes y si podrían ayudarnos aquí.
10054 no se rechaza la conexión, sino que se restablece la conexión por pares. Esto significa que se estableció con éxito una conexión TCP (s_client indica CONNECTED) pero al enviar más datos del cliente al servidor, el servidor cerró la conexión sin leer todos los datos (y devolvió TCP RST).
Si bien esto podría ser un problema de firewall, también podría indicar un problema en la configuración del servidor, es decir, el servidor acepta el cliente pero luego no puede continuar debido a una configuración no válida. Dichas configuraciones no válidas pueden ser permisos faltantes para los datos solicitados, certificado sin clave privada utilizable u otros. Sugeriría que eche un vistazo a los registros del servidor para más información.
También he visto TCP RST con servidores, balanceadores de carga o firewalls que no entienden las versiones actuales de TLS y simplemente cierran la conexión. Los navegadores solucionan este problema al volver a intentar de forma transparente con una versión de TLS más baja. Puede intentar si openssl s_client -ssl3
funciona en este servidor y recibe un certificado.
Verifique que esté utilizando TLS 1.0 o superior. Algunos servidores requieren TLS 1.2. Si no está seguro de que su servidor admita hasta TLS 1.2, mire la respuesta anterior de Steffen Ulrich y pruebe primero.
Si eso no ayuda, entonces verifique si se requiere SNI para el punto final. Si ese es el caso, este podría ser el problema. Si llama al comando s_client
con el parámetro servername
establecido en el nombre del servidor con el que desea contactar, debería funcionar.
Ejemplo de comando básico:
s_client -connect example.com:443 -tls1 -servername example.com
Puede encontrar las opciones para s_client
en la página man de s_client
.