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. Pasar a HTTPS da el error:
Problema con el 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 máquina cliente Windows 7. Puedo buscar la URL del repositorio HTTPS en Internet Explorer sin mensajes de error.
Esta publicación de blog de Philip Kelley explicó que cURL no utiliza el almacén de certificados de la máquina cliente. Seguí el consejo de la publicación del blog para crear una copia privada 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é mi certificado, como se menciona en la publicación del blog, sigo recibiendo el mensaje "no se puede obtener el certificado de emisor local".
Verifiqué que Git todavía estaba trabajando 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 originalmente vino de hacer clic en el enlace IIS8 IIS Manager 'Crear certificado autofirmado'. Tal vez eso hace que un certificado sea diferente de alguna manera a lo que espera cURL.
¿Cómo puedo hacer que Git / cURL acepte el certificado autofirmado?
{ "strict-ssl": false }
. No me agradezcas, gracias a este chico: stapp.space/fight-with-2 ¡He luchado con este error durante casi 5 horas, directamente!Respuestas:
Abra Git Bash y ejecute el comando si desea deshabilitar completamente la verificación SSL.
Nota: Esta solución puede abrirlo a ataques como ataques de hombre en el medio . Por lo tanto, vuelva a activar la verificación lo antes posible:
fuente
git -c http.sslVerify=false clone https://domain.com/path/to/git
El problema es que git usa de forma predeterminada el backend criptográfico "Linux".
Comenzando con Git para Windows 2.14, ahora puede configurar Git para usar SChannel, la capa de red de Windows incorporada como el backend criptográfico. Esto significa que utilizará el mecanismo de almacenamiento de certificados de Windows y no necesita configurar explícitamente el mecanismo de almacenamiento curl de CA: https://msdn.microsoft.com/en-us/library/windows/desktop/aa380123(v= vs.85) .aspx
Solo ejecuta:
Eso debería ayudar.
El uso de schannel es ahora la configuración estándar al instalar git para Windows, también se recomienda no retirar repositorios por SSH, si es posible, ya que https es más fácil de configurar y es menos probable que sea bloqueado por un firewall, lo que significa menos posibilidades de falla.
fuente
git config --global http.sslCAInfo <my-server-self-signed-cert.pem>
no funcione. Configuréhttp.sslCAInfo
para usar un certificado autofirmado para mi servidor, y es la razón (puede que no sea la misma que OP) que encontré "Problema de certificado SSL: no se puede obtener el certificado de emisor local" cuando lo hago, por ejemplo, agit clone https://github.com/Microsoft/vscode.git
. Finalmente, utilicé la respuesta de stackoverflow.com/a/47196562/1323552 (Ben PP Tung) para ajustar mi configuración sslCAInfo específica de mi servidor git para resolverla.También tuve este problema. En mi caso, estaba tratando de obtener un enlace 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 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.
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:
En el bloque [http], agregué una opción para deshabilitar sslVerify. Se veía así cuando terminé:
Eso hizo el truco.
NOTA:
Esto deshabilita la verificación SSL y no se recomienda como una solución a largo plazo.
Puede deshabilitar este repositorio que aún no es excelente, pero localiza la configuración.
Con la llegada de LetsEncrypt.org, ahora es bastante simple, automatizado y gratuito configurar SSL como alternativa a los certificados autofirmados y niega la necesidad de desactivar sslVerify.
fuente
sslCAinfo
entrada de configuración; pero no estoy votando la respuesta ya que no tiene mucho sentido deshabilitar permanentemente SSL para git en todo el sistema (¿ha intentado deshabilitarlo en todo el sistema, luego clonar, luego volver a habilitarlo y luego deshabilitarlo en el config local de git para el repositorio recién clonado?).git -c http.sslVerify=false clone https://...
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
O a través de la línea de comando:
fuente
git config --global http.sslCAinfo /usr/ssl/certs/ca-bundle.crt
git config --global http.sslCAinfo /c/Program\ Files\ \(x86\)/Git/bin/curl-ca-bundle.crt
git config --global http.sslCAinfo /opt/local/share/curl/curl-ca-bundle.crt
git config --list --show-origin
para ver dónde está configurada la configuración http.sslCAinfoTambién enfrenté este problema. Y finalmente se resolvió al obtener orientación de este blog de MSDN .
Actualizar
En realidad, debe agregar el certificado en el archivo de certificados de git curl-ca-bundel.cert que reside en el directorio Git \ bin.
Pasos
Finalmente verifica el estado. Tenga en cuenta que el archivo de copia de seguridad curl-ca-bundle.crt antes de editar se mantiene seguro.
fuente
ca-bundle.crt
y ubicarse enmingw64\ssl\certs
omingw32\ssl\certs
.La respuesta a esta pregunta usando makecert for Development SSL me solucionó esto.
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 un CA Root autofirmado; luego usar eso para emitir un Certificado de autenticación del servidor para mi servidor. Los instalé a ambos en IIS.
Eso hace que mi situación sea la misma que la publicación del blog mencionada en la pregunta original. Una vez que el certificado raíz fue copiado / pegado en curl-ca-bundle.crt, el combo git / curl quedó satisfecho.
fuente
Para evitar deshabilitar la verificación SSL por completo o duplicar / piratear el archivo de certificado CA incluido que utiliza git, puede exportar la cadena de certificados del host a un archivo y hacer que git lo use:
Si eso no funciona, puede deshabilitar la verificación SSL solo para el host:
Nota: Sujeto a posibles ataques de hombre en el medio cuando la verificación SSL está desactivada.
fuente
--global
opción no es necesaria: si omite--global
, la configuración solo se aplica a ese repositorio de git en particular.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.
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 incluyera toda la cadena en el archivo de certificados, esto también fallaría. Si alguien tiene punteros sobre estos, avíseme ya que lo anterior debe repetirse para una nueva instalación.
Si este es el GIT del sistema, puede usar las opciones en HERRAMIENTAS -> pestaña Opciones de GIt para usar el GIT del sistema y esto también resuelve el problema en sourcetree.
fuente
En el caso de los repositorios de github (o cualquier certificado que no esté autofirmado) , elegir a continuación mientras instala Git-on-windows, resolvió el problema.
fuente
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 colocar
https://your.domain
después de http para indicar que el siguiente certificado es solo para él.fuente
git config --global http.sslCAInfo <your-server-self-signed-cert.pem>
antes (por lo tanto, provoca el error "no se puede obtener el certificado del emisor local")C:\Program Files\Git\bin
yC:\Program Files\Git\mingw64\bin
Entonces intente algo como:
git clone https://github.com/heroku/node-js-getting-started.git
fuente
Una cosa que me confundió fue el formato de la ruta (en mi PC con Windows). Originalmente tuve esto:
Pero eso falló con el error "no se puede obtener el certificado del emisor local".
Lo que finalmente funcionó fue esto:
fuente
En mi caso, como he instalado el Terminal ConEmu para Windows 7, crea
ca-bundle
durante la instalación enC:\Program Files\Git\mingw64\ssl\certs
.Por lo tanto, tengo que ejecutar los siguientes comandos en la terminal para que funcione:
Por lo tanto, mi
C:\Program Files\Git\etc\gitconfig
contiene lo siguiente:Además, elegí la misma opción que se menciona aquí al instalar Git.
¡Espero que ayude!
fuente
Para solucionar el error específico del problema del certificado SSL: no se puede obtener el certificado de emisor local en git
Tuve el mismo problema con los certificados Let's Encrypt.
Un sitio web con https que solo necesitamos:
pero git pull dice:
Para solucionarlo, también necesitamos agregar:
fuente
Use este comando antes para ejecutar la actualización / instalación del compositor:
fuente