Recibo un error NSS error -12286
al descargar un archivo desde HTTPS usando curl
.
Puedo descargar el mismo archivo sin problemas, por wget
lo que puedo excluir cualquier problema de firewall o lista negra.
Ya probé, sin suerte, las opciones -k
y --cipher ecdhe_ecdsa_aes_128_gcm_sha_256
, ese es el cifrado preferido del servidor de acuerdo con la herramienta Qualys SSL Labs Test Server aquí: https://www.ssllabs.com/ssltest/analyze.html?d=intribunale.net&latest
Aquí está el cURL
registro:
# curl -v https://www.intribunale.net/immobili
* About to connect() to www.intribunale.net port 443 (#0)
* Trying 104.27.150.214... connected
* Connected to www.intribunale.net (104.27.150.214) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
* NSS error -12286
* Closing connection #0
* SSL connect error
curl: (35) SSL connect error
Mis versiones lib son:
# curl -V
curl 7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.19.1 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2
Protocols: tftp ftp telnet dict ldap ldaps http file https ftps scp sftp
Features: GSS-Negotiate IDN IPv6 Largefile NTLM SSL libz
SSL_ERROR_NO_CYPHER_OVERLAP
"No se puede comunicar de forma segura con un par: no hay algoritmos de cifrado comunes". Los sistemas locales y remotos no comparten conjuntos de cifrado en común. Esto puede deberse a una configuración incorrecta en cualquiera de los extremos. Puede deberse a que un servidor esté mal configurado para usar un certificado que no sea RSA con el algoritmo de intercambio de claves RSA.--cipher[s]
especificar esa suite ECDHE, ni siquiera envía ClientHello, solo cierra la conexión y da el error. Esto parece estar fuera de sincronización internamente, tal vez después de la larga negación de ECC por parte de RedHat. RedHat wget usa OpenSSL, y RedHat OpenSSL reciente es compatible con ECC (solo con P256 P384 P521 pero eso es suficiente aquí).stunnel
(que usa openssl) como simple a SSL, decirle a curlhttp(notS)://localhost[:port]/whatever
pero agregar-H "Host: realhost"
para que el servidor de destino no pueda notar la diferencia. ...Respuestas:
La solución fue actualizar a cURL 7.42 utilizando un repositorio de terceros para CentOS 6 o compilando desde fuentes
fuente
yum update nss
) o usarlocurl -1
también podría resolver esto.Tuvimos el mismo problema con curl 7.19.7. ¡Actualizamos NSS y solucionó el problema!
fuente
En CentOS 6 con el último paquete openssl (1.0.1e) Debe actualizar nss (yum update nss) como DiegoG escribió anteriormente. El comando update-ca-trust también puede ser útil. Si está utilizando curl a través de php, reinicie el proceso / servicio del servidor web (es decir, el servicio httpd restart).
fuente