permission - Certificado SSL rechazado al intentar acceder a GitHub a través de HTTPS detrás del firewall
github clone ssh (28)
¿Has comprobado tu tiempo?
Me negué absolutamente a hacer inseguras mis operaciones de Git y después de probar todo lo que se menciona aquí, me pareció que una posible causa por la que los certificados no pasan la verificación es que las fechas son incorrectas (ya sea la fecha de caducidad del certificado o el reloj local ).
Puede verificar esto fácilmente escribiendo la date
en un terminal. En mi caso (una nueva Raspberry Pi), el reloj local se configuró en 1970, por lo que un simple ntpdate -u 0.ubuntu.pool.ntp.org
solucionó todo. Para un rPi, también recomendaría que coloque el siguiente script en un trabajo cron diario (por ejemplo, /etc/cron.daily/ntpdate
):
#!/bin/sh
/usr/sbin/ntpdate -u 0.ubuntu.pool.ntp.org 1> /dev/null 2>&1
Estoy atascado detrás de un firewall, así que tengo que usar HTTPS para acceder a mi repositorio GitHub. Estoy usando cygwin 1.7.7 en Windows XP.
He intentado configurar el control remoto en https://[email protected]/username/ExcelANT.git
, pero presionando las https://[email protected]/username/ExcelANT.git
de una contraseña, pero no hago nada una vez que las https://[email protected]/username/ExcelANT.git
. https://username:<password>github.com/username/ExcelANT.git
y clonando el repositorio vacío desde cero, pero cada vez me da el mismo error
error: problema con el certificado SSL, verifique que el certificado CA esté bien. Detalles:
error: 14090086: Rutinas SSL: SSL3_GET_SERVER_CERTIFICATE: error en la verificación del certificado al acceder a https://github.com/username/ExcelANT.git/info/refs
Activar GIT_CURL_VERBOSE=1
me da
* Acerca de conectar () al puerto github.com 443 (# 0)
* Probando 207.97.227.239 ... * establecer con éxito las ubicaciones de verificación de certificado:
* Archivo: ninguno
CApath: / usr / ssl / certs
* Problema con el certificado SSL, verifique que el certificado CA esté bien. Detalles:
error: 14090086: Rutinas SSL: SSL3_GET_SERVER_CERTIFICATE: error en la verificación del certificado
* Caducidad borrada
* Cierre de conexión # 0
* Acerca de conectar () al puerto github.com 443 (# 0)
* Probando 207.97.227.239 ... * establecer con éxito las ubicaciones de verificación de certificado:
* Archivo: ninguno
CApath: / usr / ssl / certs
* Problema con el certificado SSL, verifique que el certificado CA esté bien. Detalles:
error: 14090086: Rutinas SSL: SSL3_GET_SERVER_CERTIFICATE: error en la verificación del certificado
* Caducidad borrada
* Cierre de conexión # 0
error: problema con el certificado SSL, verifique que el certificado CA esté bien. Detalles:
error: 14090086: Rutinas SSL: SSL3_GET_SERVER_CERTIFICATE: error en la verificación del certificado al acceder a https://github.com/username/ExcelANT.git/info/refs
fatal: HTTP request failed
¿Es este un problema con mi firewall, cygwin o qué?
No había establecido el proxy HTTP en la configuración de Git, sin embargo, es un servidor ISA que necesita autenticación NTLM, no básica, por lo que, a menos que alguien sepa cómo forzar a Git a usar NTLM, estoy sorprendido.
Como la respuesta más popular (por Alexey Vishentsev) lo tiene:
El problema es que no tiene ninguno de los certificados de la Autoridad de Certificación instalados en su sistema. Y estos certificados no se pueden instalar con setup.exe de cygwin.
Sin embargo, esa última afirmación es falsa (ahora, o siempre lo ha sido, no lo sé).
Todo lo que tiene que hacer es ir a la configuración de cygwin e incluir el paquete ''certificados de ca'' (está bajo Net). Esto hizo el truco para mí.
El problema es que no tiene ninguno de los certificados de la Autoridad de Certificación instalados en su sistema. Y estos certificados no se pueden instalar con setup.exe de cygwin.
Actualización: instale el paquete Net / ca-certificate en cygwin (gracias dirkjot)
Hay dos soluciones:
En realidad instalar certificados raíz. Rizos extraídos para ustedes certificados de Mozilla .
cacert.pem
archivocacert.pem
es lo que estás buscando. Este archivo contiene> 250 certificados CA (no sé cómo confiar en este número de personas). Debe descargar este archivo, dividirlo en certificados individuales, colocarlos en / usr / ssl / certs (su ruta de acceso) e indexarlos.Aquí está cómo hacerlo. Con cygwin setup.exe, instale los paquetes curl y openssl y ejecute:
$ cd /usr/ssl/certs $ curl http://curl.haxx.se/ca/cacert.pem | awk ''{print > "cert" (1+n) ".pem"} /-----END CERTIFICATE-----/ {n++}'' $ c_rehash
Importante : para poder utilizar
c_rehash
también tiene que instalaropenssl-perl
.Ignorar la verificación del certificado SSL.
ADVERTENCIA: Deshabilitar la verificación del certificado SSL tiene implicaciones de seguridad. Sin la verificación de la autenticidad de las conexiones SSL / HTTPS, un atacante malintencionado puede hacerse pasar por un punto final de confianza (como GitHub o algún otro host remoto de Git), y será vulnerable a un ataque Man-in-the-Middle . Asegúrese de comprender completamente los problemas de seguridad y su modelo de amenaza antes de usar esto como una solución.
$ env GIT_SSL_NO_VERIFY=true git clone https://github...
En CentOS 5.x, una yum update openssl
simple yum update openssl
actualizó el paquete openssl que actualizó el archivo ca-bundle.crt
sistema y solucionó el problema.
Lo mismo puede ser cierto para otras distribuciones.
En un sistema Mac OSX 10.5, pude hacer que esto funcionara con un método simple. Primero, ejecute los procedimientos de github y la prueba, que funcionó bien para mí, demostrando que mi certificado estaba realmente bien. https://help.github.com/articles/generating-ssh-keys
ssh -T [email protected]
Entonces finalmente me di cuenta de otro formato de url para mandos a distancia. Probé a los demás, arriba y no funcionaron. http://git-scm.com/book/ch2-5.html
[email protected]:MyGithubUsername/MyRepoName.git
Un simple "git push myRemoteName" funcionó muy bien!
Encontré el mismo problema para configurar Git en una plataforma de desarrollo colaborativo que tengo que administrar.
Para resolverlo:
He actualizado el lanzamiento de Curl instalado en el servidor. Descargue la última versión en el sitio web. Descargue la página de curl y siga los procedimientos de instalación. Instalación de curl
Obtenga el certificado de la autoridad que entrega el certificado para el servidor.
Agregue este certificado al archivo CAcert utilizado por curl. En mi servidor se encuentra en
/etc/pki/tls/certs/ca-bundle.crt
.Configure git para usar este archivo de certificado editando el archivo .gitconfig y establezca la ruta sslcainfo.
sslcainfo= /etc/pki/tls/certs/ca-bundle.crt
En la máquina cliente, debe obtener el certificado y configurar el archivo .gitconfig también.
Espero que esto ayude a algunos de ustedes.
Hace poco (julio de 2014) tuve un problema similar y descubrí en OS X (10.9.4) que había un certificado "DigiCert High Assurance EV Root CA" que había caducado (aunque también tenía otro).
- Acceso a llavero abierto
- buscar Certificados para "DigiCert"
- Ver menú> Mostrar certificados caducados
Encontré dos certificados llamados "DigiCert High Assurance EV Root CA", uno que vencía en noviembre de 2031 y el vencido en julio de 2014 (algunos días antes). Eliminar el certificado caducado resolvió el problema por mí.
Espero que esto ayude.
He tenido este mismo problema con Solaris Express 11. Me tomó un tiempo, pero logré encontrar dónde se colocaban los certificados. De acuerdo con /etc/openssl/openssl.cnf, la ruta para los certificados es / etc / openssl / certs. Coloqué los certificados generados usando los consejos anteriores de Alexey.
Puedes verificar que las cosas funcionen con openssl en la línea de comandos:
openssl s_client -connect github.com:443
Intente usar un archivo .netrc, se autenticará a través de https. Cree un archivo llamado a .netrc
en su directorio de inicio y ponga esto en él:
machine github.com login myusername password mypass
Ver esta publicación para más información:
https://plus.google.com/u/0/104462765626035447305/posts/WbwD4zcm2fj
Lo intenté todo, finalmente busqué en el archivo de hosts y había una entrada aleatoria para github. Eliminando el alias solucionado el problema.
% systemroot% / system32 / drivers / etc / hosts
Mejore la solución de RouMao al deshabilitar temporalmente la verificación GIT / curl ssl en Windows cmd:
set GIT_SSL_NO_VERIFY=true
git config --global http.proxy http://<your-proxy>:443
Lo bueno de esta solución es que solo tiene efecto en la ventana cmd actual.
Necesitaba dos cosas:
Vaya a la configuración de cygwin e incluya el paquete '' certificados de ca '' (se encuentra en Net) (como se indica en otra parte).
Dígale a git dónde encontrar los certificados instalados:
GIT_SSL_CAINFO = / usr / ssl / certs / ca-bundle.crt GIT_CURL_VERBOSE = 1 git ...
(La opción detallada no es necesaria)
O almacenar la opción de forma permanente:
git config --global http.sslCAinfo /usr/ssl/certs/ca-bundle.crt
git ...
Necesitaba los certificados solo para Cygwin y git, así que hice lo que @esquifit publicó. Sin embargo, tuve que ejecutar el paso 5 manualmente, c_rehash no estaba disponible en mi sistema. Seguí esta guía: Instalar certificados de CA en el marco de OpenSSL en su lugar.
No dude en omitir esta respuesta si desea solucionar el problema de los certificados. Esta respuesta tiene que ver con hacer túneles a través del firewall, que es, en mi opinión, una mejor solución para tratar con firewalls / proxy.
Hay una manera mejor que usar el acceso a http y es usar el servicio ssh ofrecido por github en el puerto 443 del servidor ssh.github.com.
Utilizamos una herramienta llamada sacacorchos. Esto está disponible tanto para CygWin (a través de la configuración desde la página de inicio de cygwin) como para Linux usando su herramienta de empaquetado favorita. Para MacOSX está disponible desde macports y brew al menos.
La línea de comandos es la siguiente:
$ corkscrew <proxyhost> <proxyport> <targethost> <targetport> <authfile>
El proxyhost y el proxyport son las coordenadas del proxy https. El targethost y targetport es la ubicación del host al que se canaliza. El archivo de autenticación es un archivo de texto con 1 línea que contiene su nombre de usuario / contraseña del servidor proxy separados por dos puntos
p.ej:
abc:very_secret
Instalación para usar el protocolo ssh "normal" para la comunicación git
Al agregar esto a ~/.ssh/config
este truco puede usarse para conexiones ssh normales.
Host github.com
HostName ssh.github.com
Port 443
User git
ProxyCommand corkscrew <proxyhost> <proxyport> %h %p ~/.ssh/proxy_auth
Ahora puedes probar que funciona de ssh-ing a gitproxy
pti@pti-laptop:~$ ssh github.com
PTY allocation request failed on channel 0
Hi ptillemans! You''ve successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.
pti@pti-laptop:~$
(Nota: si nunca ha iniciado sesión en github antes, ssh le pedirá que agregue la clave del servidor al archivo de hosts conocidos. Si está paranoico, se recomienda verificar la huella digital RSA con la que se muestra en el sitio de github en el que está subido su clave).
Una pequeña variante de este método es el caso cuando necesita acceder a un repositorio con otra clave, por ejemplo, para separar su cuenta privada de su cuenta profesional.
#
# account dedicated for the ACME private github account
#
Host acme.github.com
User git
HostName ssh.github.com
Port 443
ProxyCommand corkscrew <proxyhost> <3128> %h %p ~/.ssh/proxy_auth
IdentityFile ~/.ssh/id_dsa_acme
¡disfrutar!
Llevamos años utilizando esto tanto en Linux, Mac y Windows.
Si quieres puedes leer más sobre esto en esta publicación de blog.
Nota: deshabilitar la verificación SSL tiene implicaciones de seguridad . Permite que Man in the Middle ataque cuando usas Git para transferir datos a través de una red. Asegúrese de comprender completamente las implicaciones de seguridad antes de usar esto como una solución. O mejor aún, instale los certificados raíz.
Una forma es deshabilitar la verificación SSL CERT:
git config --global http.sslVerify false
Esto evitará que CURL verifique la certificación HTTPS.
Solo para un repositorio:
git config http.sslVerify false
Para aquellos que usan Msys / MinGW GIT, agregue esto
export GIT_SSL_CAINFO=/mingw32/ssl/certs/ca-bundle.crt
Para clonar en Windows mientras configura SSL verifique como falso:
git -c http.sslVerify=false clone http://example.com/e.git
Si desea clonar sin borrar su configuración global.
Quería que Git usara el paquete de certificados actualizado sin reemplazar el que usa todo mi sistema. Aquí se explica cómo hacer que Git use un archivo específico en mi directorio de inicio:
mkdir ~/certs
curl http://curl.haxx.se/ca/cacert.pem -o ~/certs/cacert.pem
Ahora actualice .gitconfig
para usar esto para la verificación por pares:
[http]
sslCAinfo = /home/radium/certs/cacert.pem
Tenga en cuenta que estoy usando una ruta absoluta. Git no tiene expansión de ruta aquí, por lo que no puedes usar ~
sin un feo kludge. Alternativamente, puede omitir el archivo de configuración y establecer la ruta a través de la variable de entorno GIT_SSL_CAINFO
en GIT_SSL_CAINFO
lugar.
Para solucionar este problema, establezca GIT_CURL_VERBOSE=1
. La ruta del archivo de CA que usa Git se mostrará en las líneas que comienzan con "CAfile:" en la salida.
Sé que la pregunta original enumera a Cygwin, pero aquí está la solución para CentOS:
curl http://curl.haxx.se/ca/cacert.pem -o /etc/pki/tls/certs/ca-bundle.crt
Fuente: http://eric.lubow.org/2011/security/fixing-centos-root-certificate-authority-issues/
Si está en Mac OS X, puede instalar el paquete ca-cert a través de homebrew
:
$ brew install curl-ca-bundle
$ git config --system http.sslcainfo /usr/local/share/ca-bundle.crt
La formula instala el paquete de certificados en su recurso compartido a través de:
share.install ''ca-bundle.crt''
El método de share
es solo un alias de /usr/local/share
, y el paquete curl-ca es proporcionado por Mozilla
. Es lo que ves que se hace referencia en muchos temas. Espero que esto ayude, ya que no es muy sencillo acerca de cómo abordar esto en Mac OS X. brew install curl
tampoco lo va a hacer mucho ya que solo es barril y no estará vinculado (ejecutando which curl
siempre dará salida /usr/bin/curl
, que es el valor predeterminado que viene con su sistema operativo). Esta publicación también puede ser de algún valor .
Por supuesto, deberá desactivar SSL antes de instalar homebrew
ya que es un repositorio git. Simplemente haga lo que dice curl cuando se produce un error durante la verificación SSL y:
$ echo insecure >> ~/.curlrc
Una vez que haya instalado homebrew
junto con el curl-ca-bundle
, elimine .curlrc
e intente clonar un repo en github. Asegúrate de que no haya errores y estarás listo.
NOTA: Si recurre a .curlrc
, elimínelo de su sistema en el momento en que .curlrc
prueba. Este archivo puede causar problemas importantes, así que utilícelo con fines temporales y con precaución. brew doctor
se quejará en caso de que olvide purgarlo de su sistema).
NOTA: Si actualiza su versión de git, deberá volver a ejecutar este comando, ya que la configuración del sistema se eliminará (se almacenarán en relación con el binario git basado en la versión).
Así que después de correr:
$ brew update
$ brew upgrade
Si obtiene una nueva versión de git, simplemente vuelva a ejecutar:
$ git config --system http.sslcainfo /usr/local/share/ca-bundle.crt
Y estarás todo listo.
Por último, si tienes una nueva versión de git, ejecuta:
$ git config -l --system
debería darle un error en la línea de
fatal: unable to read config file ''/usr/local/Cellar/git/1.8.2.2/etc/gitconfig''
ese es su consejo de que necesita decirle a git dónde está el paquete principal de Mozilla.
ACTUALIZAR:
.curlrc
puede o no ser el remedio para su problema. En cualquier caso, solo tiene que instalar el paquete ca de Mozilla en su máquina, ya sea que tenga que descargarlo manualmente o no. Eso es lo que importa aquí. Una vez que obtenga el paquete de ca, estará listo para comenzar. Simplemente ejecute el comando git config y apunte git al paquete de ca.
ACTUALIZAR
Hace poco tuve que añadir:
export CURL_CA_BUNDLE=/usr/local/share/ca-bundle.crt
a mi archivo de puntos .zshenv
ya que estoy usando zsh
. La opción git config
funcionó en la mayoría de los casos, pero al golpear github a través de SSL ( rvm get stable
por ejemplo), me encontré con problemas de certificados. @Maverick señaló esto en su comentario, pero en caso de que alguien lo omita o asuma que no necesariamente tiene que exportar esta variable de entorno además de ejecutar el comando git config --system....
Gracias, y espero que esto ayude.
ACTUALIZAR
Parece que el curl-ca-bundle se retiró recientemente de homebrew . Hay una recomendación aquí .
Usted querrá colocar algunos archivos en:
$(brew --prefix)/etc/openssl/certs
Si todo lo que desea hacer es usar el cliente Cygwin git con github.com, existe una forma mucho más sencilla sin tener que pasar por la molestia de descargar, extraer, convertir y dividir archivos de certificados. Proceda de la siguiente manera (asumo que Windows XP con Cygwin y Firefox)
- En Firefox, ve a la página de github (cualquiera)
- haga clic en el icono de github en la barra de direcciones para mostrar el certificado
- Haga clic en "más información" -> "mostrar certificado" -> "detalles" y seleccione cada nodo en la jerarquía que comience con el más alto; para cada uno de ellos haga clic en "Exportar" y seleccione el formato PEM:
- GTECyberTrustGlobalRoot.pem
- DigiCertHighAssuranceEVRootCA.pem
- DigiCertHighAssuranceEVCA-1.pem
- github.com.pem
- Guarde los archivos anteriores en algún lugar de su unidad local, cambie la extensión a .pem y muévalos a / usr / ssl / certs en su instalación de Cygwin (Windows: c: / cygwin / ssl / certs)
- (opcional) Ejecuta c_reshash desde el bash.
Eso es.
Por supuesto, esto solo instala una jerarquía de certificados, la que necesita para github. Por supuesto, puede utilizar este método con cualquier otro sitio sin la necesidad de instalar 200 certificados de sitios en los que no (necesariamente) confía.
Si usó un sistema operativo basado en Debian, simplemente puede ejecutar
apt-get instalar certificados de ca
Tenga en cuenta que para que funcione (instalación RVM en CentOS 5.6), tuve que ejecutar lo siguiente:
export GIT_SSL_NO_VERIFY=true
y después de eso, el procedimiento de instalación estándar para curvar el instalador RVM en bash funcionó de maravilla :)
Tuve el mismo problema. La importación del certificado o el comando para anular la verificación del ssl no funcionó. Resulta ser una contraseña caducada para el proxy de red. Hubo entrada de la configuración del proxy. en el archivo .gitconfig presente en mi perfil de usuario de Windows. Acabo de eliminar toda la entrada y comenzó a funcionar de nuevo.
Una solución muy simple: reemplace https: // con git: //
Use git: //the.repository en lugar de https: //the.repository y funcionará.
He tenido este problema en Windows con TortoiseGit y esto lo resolvió.
en un pi rasbery tuve
pi @ raspbmc: ~ $ git clone http: //github.com/andreafabrizi/Dropbox-Uploader .git Clonación en ''Dropbox-Uploader'' ... error: ¿Problema con el certificado CA de SSL (ruta? ¿derechos de acceso?) al acceder http: // github.com/andreafabrizi/Dropbox-Uploader.git/info/refs fatal: error en la solicitud HTTP
así que id a
sudo apt-get install ca-certificates
entonces
git clone http://github.com/andreafabrizi/Dropbox-Uploader.git
trabajó
Solucioné este problema usando apt-cyg (un excelente instalador similar a apt-get) para descargar fácilmente los certificados de ca (incluyendo Git y muchos más):
apt-cyg install ca-certificates
Nota : apt-cyg debe ser primero instalado. Puedes hacerlo desde la línea de comando de Windows:
cd c:/cygwin
setup.exe -q -P wget,tar,qawk,bzip2,subversion,vim
Cierre Windows cmd y abra Cygwin Bash:
wget rawgit.com/transcode-open/apt-cyg/master/apt-cyg
install apt-cyg /bin