Estoy atrapado detrás de un firewall, así que tengo que usar HTTPS para acceder a mi repositorio de GitHub. Estoy usando cygwin 1.7.7 en Windows XP.
Intenté configurar el control remoto en https://[email protected]/username/ExcelANT.git
, pero presioné las solicitudes de una contraseña, pero no hace nada una vez que la ingresé.
https://username:<password>github.com/username/ExcelANT.git
y clonar el repositorio vacío desde cero, pero cada vez me da el mismo error
error: problema con el certificado SSL, verifique que el certificado de CA esté bien. Detalles:
error: 14090086: rutinas SSL: SSL3_GET_SERVER_CERTIFICATE: la verificación del certificado falló al acceder a https://github.com/username/ExcelANT.git/info/refs
Encenderme GIT_CURL_VERBOSE=1
me da
* A punto de conectarse () al puerto 443 de github.com (# 0)
* Intentando 207.97.227.239 ... * establecer correctamente las ubicaciones de verificación de certificados:
* CAfile: ninguno
CApath: / usr / ssl / certs
* Problema de certificado SSL, verifique que El certificado de CA está bien. Detalles:
error: 14090086: Rutinas SSL: SSL3_GET_SERVER_CERTIFICATE: verificación de certificado fallida
* Caducidad borrada
* Cierre de conexión # 0
* A punto de conectarse () al puerto 443 (# 0) de
github.com * Intentando 207.97.227.239 ... * configuró con éxito el certificado verificar ubicaciones:
* CAfile: ninguno
CApath: / usr / ssl / certs
* Problema de certificado SSL, verifique que CA cert esté bien. Detalles:
error: 14090086: rutinas SSL: SSL3_GET_SERVER_CERTIFICATE: error en la verificación del certificado
* Caducidad borrada
*
Error al cerrar la conexión n. ° 0 : problema con el certificado SSL, verifique que el certificado CA esté bien. Detalles:
error: 14090086: rutinas SSL: SSL3_GET_SERVER_CERTIFICATE: la verificación del certificado falló 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 configurado el proxy HTTP en la configuración de Git, sin embargo, es un servidor ISA que necesita autenticación NTLM, no básico, por lo que a menos que alguien sepa cómo obligar a git a usar NTLM, estoy descuidado.
Respuestas:
No dude en pasar esta respuesta si desea solucionar el problema de los certificados. Esta respuesta trata de hacer un túnel con ssh a través del firewall, lo cual es, en mi humilde opinión, una mejor solución para lidiar con cosas de firewall / proxy.
Hay una mejor manera que usar el acceso http y es usar el servicio ssh ofrecido por github en el puerto 443 del servidor ssh.github.com.
Utilizamos una herramienta llamada sacacorchos. Está disponible tanto para CygWin (a través de la configuración desde la página de inicio de cygwin) como para Linux utilizando su herramienta de empaque favorita. Para MacOSX está disponible en macports y brew al menos.
La línea de comando es la siguiente:
El proxyhost y el proxyport son las coordenadas del proxy https. El targetthost y targetport es la ubicación del host para hacer un túnel. 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:
Instalación para usar el protocolo ssh "normal" para la comunicación git
Al agregar esto al
~/.ssh/config
this trick se puede usar para conexiones ssh normales.ahora puedes probar que funciona al enviar a gitproxy
(Nota: si nunca antes ha iniciado sesión en github, ssh le pedirá que agregue la clave del servidor al archivo de hosts conocido. Si es paranoico, se recomienda verificar la huella digital RSA a la que se muestra en el sitio de github donde subió su clave).
Una ligera 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.
¡disfrutar!
Hemos estado usando esto durante años en Linux, Mac y Windows.
Si lo desea, puede leer más al respecto en esta publicación de blog
fuente
Host ssh.github.com >User oharab >Hostname ssh.github.com >Port 443 >PreferredAuthentications publickey >IdentityFile ~/.ssh/id_rsa
y la clonación usando git clone lo[email protected]:oharab/log4vba.git
pusieron en marcha en poco tiempo.El problema es que no tiene ninguno de los certificados de la Autoridad de Certificación instalado en su sistema. Y estos certificados no se pueden instalar con cygwin's setup.exe.
Actualización: Instale el paquete de certificados Net / ca en cygwin (gracias dirkjot)
Hay dos soluciones:
Realmente instale certificados raíz. Curl chicos extrajeron para ustedes certificados de Mozilla .
cacert.pem
archivo es lo que estás buscando. Este archivo contiene> 250 certificados de 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 CApath) e indexarlos.Aquí está cómo hacerlo. Con cygwin setup.exe, instale los paquetes curl y openssl, ejecute:
Importante : Para poder usarlo también
c_rehash
debes instalarloopenssl-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 Git remoto), 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.
fuente
wget -O - http://curl.haxx.se/ca/cacert.pem | awk 'split_after==1{n++;split_a fter=0} /-----END CERTIFICATE-----/ {split_after=1} {print > "cert" n ".pem"}'
fatal: https://code.google.com/.../info/refs not found: did you run git update-server-info on the server?
Tal vez funcionará después de reiniciar?ca-certificates
paquete cygwin para obtener los certificados raíz que faltan. ¿Por qué esta respuesta obtuvo tantos ups?Nota: deshabilitar la verificación SSL tiene implicaciones de seguridad . Permite ataques Man in the Middle 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:
Esto evitará que CURL verifique la certificación HTTPS.
Solo para un repositorio:
fuente
Quería que Git usara el paquete de certificados actualizado sin reemplazar el que usa todo mi sistema. Aquí le mostramos cómo hacer que Git use un archivo específico en mi directorio de inicio:
Ahora actualice
.gitconfig
para usar esto para la verificación por pares:Tenga en cuenta que estoy usando una ruta absoluta. Git no hace expansión de ruta aquí, por lo que no puede usar
~
sin un feo kludge. Alternativamente, puede omitir el archivo de configuración y establecer la ruta a través de la variable de entornoGIT_SSL_CAINFO
.Para solucionar este problema, establezca
GIT_CURL_VERBOSE=1
. La ruta del archivo CA que Git está usando se mostrará en las líneas que comienzan con "CAfile:" en la salida.fuente
/etc/ssl/certs/ca-certificates.crt
en mi Ubuntu 8.04 LTS con este archivo y funcionó mágicamente!git config --global http.sslCAinfo "$HOME/certs/cacert.pem"
Tenga en cuenta que para que esto funcione (instalación de 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 :)
fuente
Una solución muy simple: reemplazar 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ó.
fuente
git://
. Como se indicó en esta respuesta anterior , deshabilitar la verificación SSL es un riesgo de seguridad.git://
protocolo utiliza SSH, que utiliza pares de claves públicas y privadas SSH para autenticación y cifrado, en lugar de un certificado SSL.git://
qué no usar SSH. Ver El Protocolo SSH y El Protocolo Git .git://
confundiendo con[email protected]:user/project.git
, que es la sintaxis de SCP-ish .Como dice la respuesta más popular (por Alexey Vishentsev):
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 'ca-certificados' (está en Net). Esto hizo el truco para mí.
fuente
CAfile: /etc/ssl/ca-bundle.crt
mientras que se instala el paquete cygwin ca-certificados/usr/ssl/certs/ca-bundle.crt
. Por lo tanto, tuve que editar~/.gitconfig
para especificar la ubicación:[http]
luegosslCAinfo = /usr/ssl/certs/ca-bundle.crt
sudo ln -s /usr/ssl/certs/ca-bundle.crt /etc/ssl/
ca-certificates
.error: SSL certificate problem, verify that the CA cert is OK.
Sé que la pregunta original enumera a Cygwin, pero aquí está la solución para CentOS:
Fuente: http://eric.lubow.org/2011/security/fixing-centos-root-certificate-authority-issues/
fuente
yum update openssl
, lo que también actualiza el paquete ca.sha256sum /etc/pki/tls/certs/ca-bundle.crt
para asegurarse de que tiene el correcto archivo.Para clonar en Windows mientras configura SSL, verifique como falso:
Si desea clonar sin modificar su configuración global.
fuente
En CentOS 5.x, una simple
yum update openssl
actualización del paquete openssl que actualizó elca-bundle.crt
archivo del sistema y solucionó el problema por mí.Lo mismo puede ser cierto para otras distribuciones.
fuente
Si todo lo que quiere hacer es usar el cliente Cygwin git con github.com, hay una manera mucho más simple sin tener que pasar por la molestia de descargar, extraer, convertir y dividir archivos cert. Proceda de la siguiente manera (supongo que Windows XP con Cygwin y Firefox)
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 confía (necesariamente).
fuente
Si tiene Mac OS X, puede instalar el paquete ca-cert a través de
homebrew
:La fórmula instala el paquete de certificados en su recurso compartido a través de:
El
share
método es solo un alias/usr/local/share
y curl-ca-bundle lo proporcionaMozilla
. Es lo que ves referenciado 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 le dará mucho, ya que es solo un barril y no estará vinculado (la ejecuciónwhich curl
siempre saldrá/usr/bin/curl
, que es el valor predeterminado que se envía con su OS). Esta publicación también puede ser de algún valor .Por supuesto, deberá deshabilitar 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:Una vez que te
homebrew
instales junto con elcurl-ca-bundle
, borra.curlrc
e intenta clonar un repositorio en github. Asegúrese de que no haya errores y estará listo para comenzar.NOTA: Si recurre a él
.curlrc
, retírelo de su sistema en el momento en que termine la prueba. Este archivo puede causar problemas importantes, así que úselo con fines temporales y con precaución.brew doctor
se quejará en caso de que se olvide de purgarlo de su sistema).NOTA: Si actualiza su versión de git, deberá volver a ejecutar este comando, ya que la configuración de su sistema se eliminará (se almacenan en relación con el binario de git según la versión).
Entonces, después de correr:
Si obtiene una nueva versión de git, simplemente vuelva a ejecutar:
Y estarás listo.
Por último, si tiene una nueva versión de git, ejecute:
debería darte 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 tu consejo que debes decirle a git dónde está el paquete de Mozilla ca.
ACTUALIZAR:
.curlrc
puede o no ser el remedio a su problema. En cualquier caso, solo instale el paquete Mozilla ca-bundle en su máquina, ya sea que tenga que descargarlo manualmente o no. Eso es lo importante aquí. Una vez que obtenga el paquete ca, estará listo para comenzar. Simplemente ejecute el comando git config y apunte git al paquete ca.ACTUALIZAR
Recientemente tuve que agregar:
export CURL_CA_BUNDLE=/usr/local/share/ca-bundle.crt
a mi.zshenv
archivo de puntos ya que estoy usandozsh
. lagit config
opción funcionó para la mayoría de los casos, pero cuando golpeé github a través de SSL (rvm get stable
por ejemplo), todavía me encontré con problemas de certificado. @Maverick señaló esto en su comentario, pero en caso de que alguien se lo pierda o asuma que no necesariamente necesita exportar esta variable de entorno además de ejecutar elgit config --system....
comando. Gracias, y espero que esto ayude.ACTUALIZAR
Parece que el paquete curl-ca se eliminó recientemente de homebrew . Hay una recomendación aquí .
Querrá colocar algunos archivos en:
$(brew --prefix)/etc/openssl/certs
fuente
export CURL_CA_BUNDLE=/usr/local/share/ca-bundle.crt
Puedes probar este comando en la Terminal :
fuente
Solucioné este problema usando apt-cyg (un gran instalador similar a apt-get) para descargar fácilmente los certificados ca (incluidos Git y muchos más):
Nota : apt-cyg debe instalarse primero. Puede hacer esto desde la línea de comandos de Windows:
Cierre el cmd de Windows y abra Cygwin Bash:
fuente
en un rasbery pi tuve
pi @ raspbmc: ~ $ git clone http: //github.com/andreafabrizi/Dropbox-Uploader .git Clonación en 'Dropbox-Uploader' ... error: ¿Problema con el certificado SSL CA (ruta? derechos de acceso?) al acceder http: // github.com/andreafabrizi/Dropbox-Uploader.git/info/refs fatal: solicitud HTTP fallida
así que id
entonces
trabajó
fuente
Si usó un sistema operativo basado en Debian, simplemente puede ejecutar
fuente
He tenido este mismo problema para Solaris Express 11. Me tomó un tiempo, pero logré encontrar dónde debían colocarse los certificados. Según /etc/openssl/openssl.cnf, la ruta para los certificados es / etc / openssl / certs. Coloqué los certificados generados utilizando los consejos anteriores de Alexey.
Puede verificar que las cosas funcionen usando openssl en la línea de comandos:
fuente
Intente usar un archivo .netrc, se autenticará a través de https. Cree una llamada de archivo
.netrc
en su directorio de inicio y póngalo allí:Vea esta publicación para más información:
https://plus.google.com/u/0/104462765626035447305/posts/WbwD4zcm2fj
fuente
Mejore la solución de RouMao al deshabilitar temporalmente la verificación de GIT / curl ssl en Windows cmd:
Lo bueno de esta solución es que solo tiene efecto en la ventana de cmd actual.
fuente
¿Has revisado tu tiempo?
Me negué absolutamente a hacer que mis operaciones de git fueran inseguras y después de probar todo lo que la gente mencionó aquí, me di cuenta de que una posible causa por la cual los certificados no pasan la verificación es que las fechas son incorrectas (ya sea la fecha de vencimiento del certificado o el reloj local ).
Puede verificar esto fácilmente escribiendo
date
un terminal. En mi caso (una nueva Raspberry Pi), el reloj local se configuró en 1970, por lo que un simple lontpdate -u 0.ubuntu.pool.ntp.org
arregló todo. Para un rPi, también recomendaría que coloque el siguiente script en un trabajo cron diario (digamos/etc/cron.daily/ntpdate
):fuente
Genere el token de acceso desde Github y guárdelo, ya que no volverá a aparecer.
o,
fuente
Encontré el mismo problema para configurar Git en una plataforma de desarrollo colaborativo que tengo que administrar.
Para resolverlo:
He actualizado la versión de Curl instalada 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 Procedimientos de instalación de curl
Recupere el certificado de la autoridad que entrega el certificado para el servidor.
Agregue este certificado al archivo CAcert utilizado por curl. En mi servidor está ubicado 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 también el archivo .gitconfig.
Espero que esto ayude a algunos de ustedes.
fuente
Intenté todo, eventualmente busqué en el archivo de hosts y había una entrada aleatoria para github. Eliminar el alias solucionó el problema
% systemroot% \ system32 \ drivers \ etc \ hosts
fuente
Simplemente deshabilité la autenticación del certificado SSL y utilicé el inicio de sesión de contraseña de nombre de usuario simple como se muestra a continuación
fuente
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: en su lugar, instalé certificados de CA en el marco de OpenSSL .
fuente
Necesitaba dos cosas:
vaya a la configuración de cygwin e incluya el paquete ' ca-certificados ' (está bajo Net) (como se indica en otro lugar).
Dile 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 ...
fuente
Tuve el mismo problema. La importación de certificados o el comando para desarmar la verificación SSL no funcionaron. 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 nuevamente.
fuente
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í, mostrando que mi certificado estaba realmente bien. https://help.github.com/articles/generating-ssh-keys
Entonces finalmente noté otro formato de URL para controles remotos. Probé los otros, arriba y no funcionaron. http://git-scm.com/book/ch2-5.html
¡Un simple "git push myRemoteName" funcionó muy bien!
fuente
Recientemente (julio de 2014) tuve un problema similar y encontré en OS X (10.9.4) que había expirado un certificado de "DigiCert High Assurance EV Root CA" (aunque también tenía otro no vencido).
Encontré dos certificados llamados "DigiCert High Assurance EV Root CA", uno con vencimiento en noviembre de 2031 y otro con vencimiento en julio de 2014 (algunos días antes). Eliminar el certificado vencido resolvió el problema por mí.
Espero que esto ayude.
fuente
Para aquellos que usan Msys / MinGW GIT, agregue esto
fuente