¿Cómo soluciono los errores de certificado cuando ejecuto wget en una URL HTTPS en Cygwin?

164

Por ejemplo, ejecutar wget https://www.dropbox.comresultados en los siguientes errores:

ERROR: The certificate of `www.dropbox.com' is not trusted.
ERROR: The certificate of `www.dropbox.com' hasn't got a known issuer.
Russell Davis
fuente

Respuestas:

131

Al observar las soluciones hacky actuales, siento que tengo que describir una solución adecuada después de todo.

Primero, debe instalar el paquete cygwin a ca-certificatestravés de setup.exe de Cygwin para obtener los certificados.

NO use curl o hacks similares para descargar certificados (como consejos de respuesta contiguos) porque eso es fundamentalmente inseguro y puede comprometer el sistema.

En segundo lugar, debe decirle a wget dónde están sus certificados, ya que no los recoge de forma predeterminada en el entorno Cygwin. Si puede hacerlo, ya sea con el parámetro de línea de comandos --ca-directory=/usr/ssl/certs(mejor para scripts de shell) o agregando ca_directory = /usr/ssl/certsal ~/.wgetrcarchivo.

También puede solucionarlo ejecutando ln -sT /usr/ssl /etc/sslcomo se indicó en otra respuesta, pero eso solo funcionará si tiene acceso administrativo al sistema. Otras soluciones que describí no requieren eso.

Shnatsel
fuente
55
Gracias por esta respuesta, y especialmente por el recordatorio sobre el archivo ~ / .wgetrc. Como usuario de MacPorts, mis certificados se encuentran en / opt / local / etc / openssl, un hecho que espero que alguien encuentre útil.
Bryce Anderson
3
Y para fink, están en /sw/etc/ssl/certs/ca-bundle.crt que viene como parte del ca-bundlepaquete, como se describe aquí .
jhfrontz
No estoy seguro si es un error tipográfico pero ln -s /etc/ssl /usr/sslfuncionó para mí.
zkent
240

Si no le importa verificar la validez del certificado, simplemente agregue la --no-check-certificateopción en la línea de comandos de wget. Esto funcionó bien para mí.

NOTA: Esto lo abre a ataques de hombre en el medio (MitM), y no se recomienda para nada en lo que a usted le interese la seguridad.

DH4
fuente
1
Esto funcionó para mí. Las otras soluciones relacionadas con la instalación y actualización de los certificados no lo resolvieron. En mi caso particular no hay problemas de seguridad.
marlar
103

Si el problema es que falta una CA raíz conocida y cuando está utilizando ubuntu o debian, puede resolver el problema con esta línea:

sudo apt-get install ca-certificates
cguenther
fuente
1
apt-get está en cygwin? apt-get está en redgat? ;)
Denis Chenu
55
ca-certificados ya estaba instalado en mi computadora. Correr update-ca-certificatesresolvió el problema.
Tomás Fox
Esto funcionó también en mi Synology DS215j con Debian Chroot.
microspino
@fox update-ca-certificateses un comando ubuntu, no disponible en debian.
Devy
@Devy Realmente funcionó en mi Raspberry Pi ejecutando Debian Wheezy
Luis Lobo Borobia
13

Primero, se deben instalar los certificados SSL. Instrucciones (basadas en https://stackoverflow.com/a/4454754/278488 ):

pushd /usr/ssl/certs
curl http://curl.haxx.se/ca/cacert.pem | awk 'split_after==1{n++;split_after=0} /-----END CERTIFICATE-----/ {split_after=1} {print > "cert" n ".pem"}'
c_rehash

Lo anterior es suficiente para solucionarlo curl, pero wgetrequiere un enlace simbólico adicional:

ln -sT /usr/ssl /etc/ssl
Russell Davis
fuente
66
¿No es inseguro instalar autoridades de certificación raíz desde un sitio web aleatorio, especialmente con haxx en el nombre?
Chloe
66
@Chloe curl.haxx.se ese es el sitio de desarrollo de cURL. Gente bastante confiable.
iluminar
¿Cómo lo arreglas sin rizos?
Mark Lakata
1
omfg el enlace simbólico fue lo que me perdí ... busqué 30 minutos para una solución de 1 línea> <
Populus
44
Esto es hacky en varios niveles. Primero, no necesita descargar los certificados manualmente porque hay un paquete de Cygwin para eso llamado "ca-certificados". En segundo lugar, el enlace simbólico solo funcionará si tiene acceso administrativo al sistema o si ha instalado cygwin solo para su cuenta de usuario, lo que no siempre es así, por lo que el código no es confiable.
Shnatsel
10

Tal vez esto ayude:

wget --no-check-certificate https://blah-blah.tld/path/filename
Alexey Soloviev
fuente
1
Una más: esta situación también es posible si está utilizando Kaspersky AntiVirus o el mismo software (de forma predeterminada está reemplazando el certificado SSL verificado del sitio por el suyo), por lo que puede deshabilitar la comprobación del tráfico SSL en el software antivirus.
Alexey Soloviev
4
apt-get install ca-certificates 

El shace la diferencia;)

Pete
fuente
No hay apt-geten cygwin, por lo que esto no funciona.
jlh
1

Tengo el problema similar y lo solucioné desactivando temporalmente mi antivirus (Kaspersky Free 18.0.0.405). Este AV tiene un módulo de intercepción HTTPS que autofirma automáticamente todos los certificados que encuentra en las respuestas HTTPS.

Wget de Cygwin no sabe nada sobre el certificado raíz AV, por lo que cuando encuentra que el certificado del sitio web fue firmado con un certificado de no confianza, imprime ese error.

Para solucionar esto permanentemente sin deshabilitar AV, debe copiar el certificado raíz AV del almacén de certificados de Windows /etc/pki/ca-trust/source/anchorscomo archivo .pem (codificación base64) y ejecutarupdate-ca-trust

Denis Bakharev
fuente
-2

Solo haz

apt-get install ca-certificate
tekintian
fuente
-4

Si está utilizando Windows, vaya al panel de control, haga clic en actualizaciones automáticas y luego haga clic en el enlace Sitio web de Windows Update. Solo sigue el paso. Al menos esto funciona para mí, no hay más certificados emitidos, es decir, cada vez que voy a https://www.dropbox.com como antes.

Saiful
fuente
Esto no está relacionado con Cygwin
Synthead