No se puede resolver "no se puede obtener el certificado del emisor local" usando git en Windows con certificado autofirmado


Estoy usando git en Windows. Instalé el paquete msysgit. Mi repositorio de pruebas tiene un certificado autofirmado en el servidor. Puedo acceder y usar el repositorio usando http sin problemas. Al pasar a https aparece el error "Problema del certificado SSL: no se puede obtener el certificado del emisor local".

Tengo el certificado autofirmado instalado en las Entidades de certificación Raíz de confianza de mi equipo cliente de Windows 7. Puedo navegar a la url del repositorio https en Internet Explorador sin mensajes de error.

Este blog http://blogs.msdn.com/b/phkelley/archive/2014/01/20/adding-a-corporate-or-self-signed-certificate-authority-to-git-exe-s-store.aspx explicó que curl no usa el almacén de certificados de la máquina cliente. Seguí el consejo del blog para crear una copia privada de curl-ca-bundle.crt y configurar git para usarlo. Estoy seguro de que git está usando mi copia. Si cambio el nombre de la copia; git se queja de que falta el archivo.

Pegué en mi certificado, como se mencionó en la entrada del blog, todavía recibo el mensaje "no se puede obtener el certificado del emisor local".

Comprobé que git seguía funcionando clonando un repositorio de GitHub a través de https.

Lo único que veo que es diferente a la entrada del blog es que mi certificado ES la raíz - no hay cadena para alcanzarlo. Mi certificado originalmente vino de hacer clic en el enlace Administrador de IIS IIS de IIS8 'Crear certificado Autofirmado'. Tal vez eso hace que un certificado sea diferente de alguna manera a lo que Curl espera.

¿Cómo puedo hacer que git/curl acepte el certificado autofirmado?

Author: RichardHowells, 2014-05-27

11 answers

Abra Git Bash y ejecute el comando si desea deshabilitar completamente la verificación SSL.

git config --global http.sslVerify false

Nota: Esta solución puede abrirle a ataques como ataques man-in-the-middle . Por lo tanto, vuelva a activar la verificación tan pronto como sea posible:

git config --global http.sslVerify true
 162
Author: Samir,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-06 09:32:11

Yo también tuve este problema. En mi caso, estaba tratando de obtener un gancho Git post-receive para actualizar una copia de trabajo en un servidor con cada push. He intentado seguir las instrucciones del blog al que has enlazado. No funcionó para mí también y anular la configuración por usuario tampoco parecía funcionar.

Lo que terminé teniendo que hacer fue deshabilitar la verificación SSL (como se menciona en el artículo) para Git en su conjunto. No es la solución perfecta, pero funcionará hasta que pueda encontrar una mejor una.

Edité el archivo de texto de configuración de Git (con mi aplicación neutral de final de línea favorita como Notepad++) ubicada en:

C:\Program Files (x86)\Git\etc\gitconfig

En el bloque [http], agregué una opción para deshabilitar sslVerify. Se veía así cuando terminé:

[http]
    sslVerify = false
    sslCAinfo = /bin/curl-ca-bundle.crt

Eso hizo el truco.

NOTA: Esto deshabilita la verificación SSL y no se recomienda como una solución a largo plazo.

 88
Author: kiddailey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-25 16:51:49

Kiddailey Creo que estaba bastante cerca, sin embargo, no deshabilitaría la verificación ssl, sino que simplemente proporcionaría el certificado local:

En el archivo de configuración de Git

[http]
    sslCAinfo = /bin/curl-ca-bundle.crt

O a través de la línea de comandos:

git config --global http.sslCAinfo /bin/curl-ca-bundle.crt
 39
Author: Oliver,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-22 00:39:30

La respuesta a esta pregunta Usando makecert para el Desarrollo SSL arregló esto para mí.

No sé por qué, pero el certificado creado por el simple enlace 'Crear certificado Autofirmado' en el Administrador de IIS no funciona. Seguí el enfoque en la pregunta vinculada de crear e instalar una raíz de CA autofirmada; luego lo usé para emitir un certificado de autenticación de servidor para mi servidor. Los instalé en IIS.

Eso hace que mi situación sea la misma como la entrada del blog a la que se hace referencia en la pregunta original. Una vez que el certificado raíz fue copiado/pegado en curl-ca-bundle.crt el combo git / curl estaba satisfecho.

 39
Author: RichardHowells,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:33:26

También me enfrenté a este problema. Y finalmente se resolvió al obtener orientación de Este Blog de MSDN Actualizar
En realidad, necesita agregar el certificado en el archivo de certificados de git curl-ca-bundel.certificado que reside en el directorio Git\bin.
Pasos

  1. Abre tu página de github en el navegador y haz clic sobre el icono de candado en la barra de direcciones.
  2. En la pequeña ventana emergente abierta, vaya al enlace 'ver certificado', se abrirá una ventana emergente.
  3. En el que vaya a la pestaña certificados (tercera en mi caso). Seleccione el nodo superior que es certificado raíz. Y presione el botón copiar certificado en la parte inferior y guarde el archivo.
  4. En el explorador de archivos, navegue por el directorio Git\bin y abra curl-ca-bundle.crt en el editor de texto.
  5. Abra el archivo de certificado exportado (en el paso 3) en el editor de texto también.
  6. Copie todo el contenido del certificado exportado al final de curl-ca-bundle.crt, y guardar.

Finalmente verifique el estado. Tenga en cuenta que copia de seguridad curl-ca-bundle.archivo crt antes de editar para permanecer en el lado seguro.

 33
Author: Nadeem Jamali,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-23 18:09:52

Acabo de tener el mismo problema, pero usando sourcetree en Windows Los mismos pasos para GIT normal en Windows también. Siguiendo los siguientes pasos pude resolver este problema.

  1. Obtenga el árbol de certificados del servidor Esto se puede hacer usando chrome. Navegue hasta ser dirección del servidor. Haga clic en el icono del candado y vea los certificados. Exporte toda la cadena de certificados como formato de archivos codificados (PEM) base64.
  2. Agregue los certificados a la cadena de confianza de su configuración de GIT trust file Ejecute "git config list list". encuentra el " http.sslcainfo " configuración esto muestra dónde se encuentra el archivo de confianza del certificado. Copie todos los certificados en el archivo de la cadena de confianza, incluidos " - - BEGIN - - "y" -- END - -".
  3. Asegúrese de agregar toda la cadena de certificados al archivo de certificados

Esto debería resolver su problema con los certificados autofirmados y usando GIT.

He intentado usar el " http.sslcapath" configuración pero esto no funcionó. También si si no se incluye toda la cadena en el archivo de certificados, esto también fallaría. Si alguien tiene punteros en estos por favor hágamelo saber ya que lo anterior tiene que repetirse para una nueva instalación.

Si este es el GIT del sistema, puede usar las opciones en HERRAMIENTAS - > opciones Git tab para usar el sistema GIT y esto resuelve el problema en sourcetree también.

 16
Author: JamesD,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-28 17:19:59

Para evitar deshabilitar la verificación ssl por completo o duplicar / piratear el archivo de certificado CA incluido utilizado por git, puede exportar la cadena de certificados del host a un archivo , y hacer que git lo use:

git config --global http.https://the.host.com/.sslCAInfo c:/users/me/the.host.com.cer

Si eso no funciona, puede deshabilitar la verificación ssl solo para el host:

git config --global http.https://the.host.com/.sslVerify false

Nota : Sujeto a posibles ataques man in the middle cuando la verificación ssl está desactivada.

 15
Author: zionyx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-16 10:12:08

En el caso de los repositorios de github (o cualquier certificado sin firma propia), al elegir a continuación mientras instalaba Git-on-windows, se resolvió el problema.

introduzca la descripción de la imagen aquí

 4
Author: Jawad Al Shaikh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-15 15:01:28

He tenido este problema antes, y lo resuelvo usando la siguiente configuración.

[http "https://your.domain"] sslCAInfo=/path/to/your/domain/priviate-certificate

Desde git 2.3.1, puede poner https://your.domain después de http para indicar que el siguiente certificado es solo para él.

 3
Author: Ben P.P. Tung,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-09 07:50:38
  1. Descargue el certificado desde este enlace: https://github.com/bagder/ca-bundle
  2. Añadir a C:\Program Files\Git\bin y C:\Program Files\Git\mingw64\bin

Entonces intenta algo como: git clone https://github.com/heroku/node-js-getting-started.git

 1
Author: Alex,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-06 15:44:56

Utilice este comando antes de ejecutar composer update / install:

git config --global http.sslverify false
 -5
Author: Prashant Paliwal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-23 10:13:37