No se puede resolver "no se puede obtener el certificado de emisor local" con git en Windows con certificado autofirmado
curl ssl-certificate (11)
- Descargue el certificado de este enlace: https://github.com/bagder/ca-bundle
-
C:/Program Files/Git/mingw64/bin
aC:/Program Files/Git/bin
yC:/Program Files/Git/mingw64/bin
Luego intente algo como: git clone https://github.com/heroku/node-js-getting-started.git
Estoy usando git en Windows. Instalé el paquete msysgit. Mi repositorio de prueba 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 de certificado SSL: no se puede obtener el certificado de emisor local".
Tengo el certificado autofirmado instalado en las Autoridades de certificación raíz de confianza de mi Windows 7 - máquina cliente. Puedo navegar a la URL del repositorio https en Internet Explorer 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í los consejos de la publicación del blog para crear una copia privada de curl-ca-bundle.crt y configurar git para usarla. Estoy seguro de que git está usando mi copia. Si cambio el nombre de la copia; git se queja de que el archivo falta.
He pegado mi certificado, como se menciona en la publicación del blog, todavía recibo el mensaje "no se puede obtener el certificado de emisor local".
Comprobé que git aún funcionaba clonando un repositorio de GitHub a través de https.
Lo único que veo que es diferente a la publicación del blog es que mi certificado ES la raíz, no hay una cadena para alcanzarlo. Mi certificado proviene originalmente de hacer clic en el enlace IIS8 Administrador de IIS ''Crear certificado autofirmado''. Quizás eso hace que un certificado sea diferente de alguna manera a lo que Curl espera.
¿Cómo puedo obtener git / curl para aceptar el certificado autofirmado?
Abra Git Bash y ejecute el comando si desea deshabilitar por completo la verificación de SSL.
git config --global http.sslVerify false
Nota: esta solución puede provocar ataques como los ataques de hombre en el medio . Por lo tanto, active la verificación nuevamente tan pronto como sea posible:
git config --global http.sslVerify true
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.
- Obtener el árbol de certificados del servidor Esto se puede hacer usando cromo. Navegue para ser la dirección del servidor. Haga clic en el ícono del candado y vea los certificados. Exporte toda la cadena de certificados como formato de archivos codificados en base64 (PEM).
- Agregue los certificados a la cadena de confianza de su archivo de configuración de confianza GIT Ejecute "git config --list". encuentre la configuración "http.sslcainfo" que muestra dónde se encuentra el archivo de confianza del certificado. Copie todos los certificados en el archivo de la cadena de confianza, incluido el "- -BEGIN- -" y el "- -END- -".
- Asegúrese de agregar toda la cadena de certificados al archivo de certificados
Esto debería resolver su problema con los certificados autofirmados y el uso de GIT.
Intenté usar la configuración "http.sslcapath" pero esto no funcionó. Además, si no incluía toda la cadena en el archivo de certificados, esto también fallaría. Si alguien tiene sugerencias sobre estos, por favor avíseme ya que lo anterior tiene que repetirse para una nueva instalación.
Si este es el sistema GIT, entonces puede usar las opciones en HERRAMIENTAS -> pestaña Opciones GIt para usar el sistema GIT y esto luego resuelve el problema en el árbol de fuentes también.
Enfrenté este problema también. Y finalmente se resolvió al obtener orientación de http://blogs.msdn.com/b/phkelley/archive/2014/01/20/adding-a-corporate-or-self-signed-certificate-authority-to-git-exe-s-store.aspx Update
En realidad, necesita agregar el certificado en el archivo de certificados de git curl-ca-bundel.cert que reside en el directorio Git / bin.
Pasos
- Abra su página github en el navegador y haga clic sobre el icono de candado en la barra de direcciones.
- En el pequeño menú emergente abierto navega hasta el enlace ''ver certificado'', se abrirá una ventana emergente.
- En el cual navego a la pestaña de certificados (3º en mi caso). Seleccione el nodo superior que es el certificado raíz. Y presione el botón de certificado de copia en la parte inferior y guarde el archivo.
- En el explorador de archivos navegue por el directorio Git / bin y abra curl-ca-bundle.crt en el editor de texto.
- Abra el archivo del certificado exportado (en el paso 3) en el editor de texto también.
- Copie todo el contenido del certificado exportado al final de curl-ca-bundle.crt y guárdelo.
Por último revisa el estado. Tenga en cuenta que el archivo de copia de seguridad curl-ca-bundle.crt antes de la edición debe permanecer en el lado seguro.
He tenido este problema antes, y lo soluciono 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.
La respuesta a esta pregunta Usando makecert for Development SSL solucionó esto por 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 cuestión relacionada de crear e instalar un CA Root autofirmado; luego usar eso para emitir un Certificado de Autenticación del Servidor para mi servidor. Instalé ambos en IIS.
Eso hace que mi situación coincida con la publicación del blog a la que se hizo referencia en la pregunta original. Una vez que el certificado raíz se copió / pegó en curl-ca-bundle.crt se cumplió el combo git / curl.
Para evitar la deshabilitación total de la verificación SSL o la duplicación / piratería del archivo de certificado CA 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 desactivar la verificación de ssl solo para el host:
git config --global http.https://the.host.com/.sslVerify false
Nota: Sometido a posibles ataques de hombre en el medio cuando la verificación de ssl está desactivada.
Tuve este problema también. En mi caso, estaba tratando de obtener un gancho Git posterior a la recepción para actualizar una copia de trabajo en un servidor con cada inserción. Intenté seguir las instrucciones en el blog al que te vinculaste. Tampoco funcionó para mí, y anular la configuración por usuario tampoco parecía funcionar.
Lo que terminé teniendo que hacer fue deshabilitar la verificación SSL (como menciona el artículo) para Git en general. No es la solución perfecta, pero funcionará hasta que pueda encontrar una mejor.
Edité el archivo de texto de configuración de Git (con mi aplicación neutral de final de línea favorita como Notepad ++) ubicado en:
C: / Archivos de programa (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 de SSL y no se recomienda como una solución a largo plazo.
Use este comando antes para ejecutar la actualización / instalación del compositor:
git config --global http.sslverify false
kiddailey creo que estuvo bastante cerca, sin embargo, no desactivé la verificación SSL sino que solo proporcioné 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 comando:
git config --global http.sslCAinfo /bin/curl-ca-bundle.crt