Estoy intentando realizar una solicitud POST a través de curl a un servidor que solo admite TLS 1.2, TLS 1.1 y TLS 1.0. Sin embargo, incluso cuando trato de especificar la necesidad de TLS en lugar del SSL v. 3 predeterminado (agregando --- tlsv1) obtengo la siguiente respuesta:
curl: (35) error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
Esta es la versión de curl que estoy usando:
curl 7.15.5 (x86_64-redhat-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5
No hay problemas con el firewall para resolver la URL.
¿Cómo puedo hacer que el POST tenga éxito?
Actualización: También he intentado realizar la solicitud con Python para intentar averiguar cuál es el problema. La URL es interna, por lo que no puedo compartir eso, pero se agradecería la ayuda sobre cuál podría ser el problema de configuración. Aquí está el error de Python:
urllib2.URLError: <urlopen error (1, 'error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure')>
Respuestas:
Es difícil decir cuál es el problema sin saber la URL exacta. Pero dada la versión de curl que está usando, es posible que el servidor requiera Indicación del nombre del servidor (SNI) que no es compatible con la versión anterior de curl que está utilizando.
fuente
El error "handshake" indica que el cliente y el servidor no pudieron ponerse de acuerdo sobre cómo configurar los requisitos del canal seguro para HTTPS. La versión de OpenSSL que está utilizando es muy antigua y solo comprende SSL hasta sslv3, que el servidor requiere como mínimo. Por lo tanto, el error "sslv3": le informa que intentó hablar SSL v3 (que es menor que TLS v1) y no pudo obtener una respuesta significativa.
No tiene suerte sin una actualización a una versión más reciente de OpenSSL, e incluso entonces la versión de rizo también debe ser golpeada para manejar la versión más nueva de TLS.
fuente