Estoy usando git en Windows. He instalado el msysgit paquete. Mi prueba repositorio tiene un certificado autofirmado en el servidor. Puedo acceder y utilizar el repositorio usando http sin problemas. Mover a https da el error «Certificado SSL problema: no se puede obtener el local emisor del certificado».

Tengo el certificado autofirmado instalado en las entidades emisoras Raíz de Confianza de mi Windows 7 – máquina cliente. Puedo navegar con el https url del repositorio 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 el rizo no utilice la máquina cliente del almacén de certificados. He seguido el post del blog de consejos para crear una copia privada de curl-ca-bundle.crt y configurar git para usarlo. Estoy seguro de que git es el uso de mi copia. Si cambio el nombre de la copia; git se queja de falta el archivo.

Me pega en mi certificado, como se mencionó en el post del blog, me sigue apareciendo el mensaje de «no se puede obtener el local emisor del certificado».

He comprobado que git se sigue trabajando por la clonación de un Repositorio de GitHub a través de https.

La única cosa que yo vea que es diferente a la del blog es que mi certificado de la raíz – no hay cadena para llegar a él. Mi certificado de vino originalmente de hacer clic en el IIS8 el Administrador de IIS enlace «Crear Certificado autofirmado’. Tal vez que hace un certificado diferente de algún modo a lo curl de espera.

¿Cómo puedo obtener git/curl para aceptar el certificado autofirmado?

13 Comentarios

  1. 211

    Abrir Git Bash y ejecutar el comando si desea desactivar completamente comprobación de SSL.

    git config --global http.sslVerify false
    

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

    git config --global http.sslVerify true
    
    • Esta respuesta derrotas de la seguridad de SSL, permitiendo que el hombre-en-el-medio de los ataques. Otras respuestas ya explicamos cómo configurar git para confiar en el certificado específico que usted necesita.
    • horrible respuesta, de hecho, usted incluso no les digo para activar SSL. Esta es la razón por las vulnerabilidades de seguridad suceder.
    • Si usted está usando Gitblit entonces no hay otra opción en lugar de hacer sshVerify falso.
    • Para deshabilitar SSL/TLS de verificación para una sola git de comandos, utilice el comando siguiente: git -c http.sslVerify=false clone https://domain.com/path/to/git
    • Hay varias soluciones que ya han aportado a continuación, y ya he sugerido a los contras. Por lo que es hasta que lo soluciones que se están recogiendo para resolver el problema.
    • Lo que funcionó para mí fue: git clone <addr of repo> --config http.proxy= --config http.sslVerify=false

  2. 91

    Tuve este problema así. En mi caso, yo estaba tratando de hacer un post-recibir Git gancho para la actualización de una copia de trabajo en un servidor con cada empuje. Traté de seguir las instrucciones en el blog enlazado. No trabajo para mí y principal de la configuración de cada usuario no parecen trabajar bien.

    Lo acabé teniendo que hacer era deshabilitar la comprobación de SSL (como el artículo menciona a) para Git como un todo. No es la solución perfecta, pero voy a trabajar hasta que pueda encontrar una mejor uno.

    He editado el Git config archivo de texto (con mi favorito de final de línea neutral de la aplicación, como el Bloc de notas++) que se encuentra en:

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

    En [http] bloque, he añadido una opción para desactivar la sslVerify. Era así cuando yo estaba hecho:

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

    Que hizo el truco.

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

    • Esta derrota el propósito de SSL.
    • usted puede utilizar el comando «git config –global de http.sslVerify false» para deshabilitar la comprobación de SSL
    • Gracias por señalar la sslCAinfo entrada de configuración, pero no estoy upvoting la respuesta, ya que no tiene mucho sentido para desactivar permanentemente SSL para git de todo el sistema (¿has probado a desactivar todo el sistema, a continuación, clon, a continuación, volver a habilitar y, a continuación, deshabilitar en el local de git config para el recién clonado repo?).
    • Un comando, no hay necesidad de cambiar los archivos de configuración: git -c http.sslVerify=false clone https://...
    • Sí, esto es algo necesario cuando se debe trabajar con los servidores gestionados por administradores que no saben lo que están haciendo y tener acceso a los repositorios en los que el servidor y el puerto 22 es deshabilitado en todas las conexiones, incluso sus propios servidores que de lo contrario no se puede garantizar, al parecer.
    • Mejor solución aquí: blogs.msdn.microsoft.com/phkelley/2014/01/20/…

  3. 72

    El problema es que git de forma predeterminada utilizando el «Linux» crypto backend.

    Principio con Git para Windows 2.14, ahora puede configurar Git para el uso de SChannel, la incorporada en Windows capa de red como el crypto backend. Esto significa que usted va a utilizar el certificado de Windows mecanismo de almacenamiento y usted no necesita configurar explícitamente el curl de CA mecanismo de almacenamiento: https://msdn.microsoft.com/en-us/library/windows/desktop/aa380123(v=vs 85).aspx

    Ejecutar:

    git config --global http.sslbackend schannel
    

    Que debe de ayuda.

    Uso de schannel es por ahora la configuración estándar cuando la instalación de git para windows, también se recomienda no checkout repositorios por SSH anmore si es posible, como https es más fácil de configurar y menos probabilidades de ser bloqueado por un firewall que significa menos posibilidades de fracaso.

    • Nota, sin embargo, que esta solución puede hacer que git config --global http.sslCAInfo <my-server-self-signed-cert.pem> que no funciona. He configurado http.sslCAInfo para utilizar un certificado autofirmado para mi servidor, y es la razón (puede no ser la misma OP) que me he encontrado «Certificado SSL problema: no se puede obtener el local emisor del certificado» cuando hago por ejemplo un git clone https://github.com/Microsoft/vscode.git. Finalmente he utilizado la respuesta de stackoverflow.com/a/47196562/1323552 (Ben P. P. Tung) para afinar mi sslCAInfo especifico de configuración que mi servidor git para resolverlo.
  4. 46

    kiddailey creo que estaba bastante cerca, sin embargo no me gustaría deshabilitar la comprobación de ssl, sino más bien sólo el suministro de los locales certificado:

    En el Git config archivo

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

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

    git config --global http.sslCAinfo /bin/curl-ca-bundle.crt
    
    • En git para windows, este es git config --global http.sslCAinfo /usr/ssl/certs/ca-bundle.crt
    • O para mí git config --global http.sslCAinfo /c/Program\ Files\ \(x86\)/Git/bin/curl-ca-bundle.crt
    • Para los usuarios de los MacPorts, esto es git config --global http.sslCAinfo /opt/local/share/curl/curl-ca-bundle.crt
    • Con Git 2.8 puede utilizar git config --list --show-origin para ver donde el http.sslCAinfo config es el conjunto de
    • Mi certificado de ubicación en mac es : ~/macports/share/curl/curl-ca-bundle.crt
  5. 40

    Me enfrenté a este tema. Y, finalmente, se resolvió mediante la obtención de la guía de este Blog de MSDN.

    Actualización

    Realmente necesita para agregar el certificado en git certificados de archivo curl-ca-randomizado.cert que reside en Git\bin.

    Pasos

    1. Abrir su página de github en el explorador y haga clic sobre icono de candado en la barra de direcciones.
    2. En la abrió poco emergente desplácese a «ver certificado» enlace, se abrirá una ventana emergente.
    3. En el que vaya a la ficha de certificados (3º en mi caso). Seleccione el nodo superior que es el certificado raíz. Y pulse copia de certificado de botón en la parte inferior y guarde el archivo.
    4. En el explorador de archivos navegar Git\bin y abrir curl-ca-bundle.crt en el editor de texto.
    5. Abrir el archivo de certificado exportado (en el paso 3) en el editor de texto así.
    6. De copiar todo el contenido del certificado exportado a la final de curl-ca-bundle.crt, y guardar.

    Finalmente comprobar el estado. Por favor, tenga en cuenta que la copia de seguridad curl-ca-bundle.crt archivo antes de editarlo para permanecer en el lado seguro.

    • «navegar Git\bin y abrir curl-ca-bundle.crt» no Hay curl-ca-bundle.crt en el git\bin!
    • si no existe, crear uno usted mismo en el bloc de notas y cambiarle el nombre con curl-ca-bundle.crt. Otros pasos siguen siendo los mismos.
    • Puede ser llamado simplemente ca-bundle.crt y se encuentra en mingw64\ssl\certs o mingw32\ssl\certs.
    • Utiliza esto para Atlassian del SourceTree. El paquete de instalación de GIT es en %userprofile%\appdata\local\attlassian\sourcetree\git_local. curl-ca-bundle.crt ya existía, ofrecí mi codificado en base64 raíz exportado cert.
  6. 39

    La respuesta a esta pregunta El uso de makecert para el Desarrollo de SSL fijo para mí.

    No sé por qué, pero el certificado creado por el simple «Crear Certificado autofirmado» en el Administrador de IIS no hacer el truco. He seguido el enfoque en los enlaces cuestión de la creación y la instalación de una auto-firmado Raíz de CA; a continuación, usar eso para emitir un Certificado de Autenticación de Servidor para mi servidor. He instalado tanto de ellos en IIS.

    Que se mete a mi en la misma situación que el blog se hace referencia en la pregunta original. Una vez que el certificado raíz se copia/pega en curl-ca-bundle.crt el git/curl combo estaban satisfechos.

    • «no sé por qué, pero el certificado creado por el simple» Crear Certificado autofirmado » en el Administrador de IIS no hacer el truco…» – lo mejor que puedo decir, crea malformación de los certificados. Hay un montón de reglas a la hora de crear X. 509 certificados; el «hacer lo mínimo para que funcione» ya no funciona bien. Véase también ¿Cómo se puede firmar Solicitud de Firma de Certificado con su Autoridad de Certificación y Cómo crear un certificado auto-firmado con openssl?
    • Esto funcionó para mí, pero tengo temporalmente colgó en el «he instalado tanto de ellos en IIS» parte. A clairfy para los demás…el servidor cert asignado en el IIS, y la CA raíz debe ser importado a «entidades emisoras Raíz de Confianza» a través de las Ventanas cert manager utility (certmgr.msc)
  7. 24

    Para evitar la desactivación de ssl de verificación de la totalidad o duplicar /hacking incluido el certificado de la CA de archivo utilizado por git, puede exportar la acogida de la cadena de certificados en un archivo, y hacer git uso:

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

    Si eso no funciona, puede deshabilitar la comprobación de ssl sólo para el anfitrión:

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

    Nota : Sujeto a posibles hombre en medio de los ataques cuando ssl de verificación está desactivada.

    • Cabe señalar que el --global opción no es necesaria: si se omite --global, la configuración sólo se aplica a un determinado repositorio git.
  8. 18

    He tenido el mismo problema pero el uso de sourcetree en windows Mismos pasos para el normal GIT en Windows. Siguiendo los siguientes pasos he podido resolver este problema.

    1. Obtener el certificado de servidor árbol
      Esto se puede hacer mediante el uso de chrome.
      Vaya a ser la dirección del servidor.
      Haga clic en el icono del candado y de la vista de los certificados.
      Exportar todos los de la cadena de certificados como codificado en base64 archivos (PEM) en formato.
    2. Agregar los certificados de la cadena de confianza de su GIT confianza archivo de configuración
      Ejecutar «git config –list».
      encontrar «http.sslcainfo» configuración de esta muestra donde el certificado de confianza se encuentra el archivo.
      Copia de todos los certificados en la cadena de confianza de archivo incluyendo el «- -BEGIN- -» y «- -FIN- -«.
    3. Asegúrese de agregar toda la Cadena de certificados los certificados de archivo

    Esto debería resolver su problema con los certificados autofirmados y el uso de GIT.

    He intentado utilizar el «http.sslcapath» configuración pero esto no funcionó. También, si no incluyen toda la cadena en los certificados de archivo, a continuación, este también fallará. Si alguien tiene consejos sobre estos por favor, hágamelo saber como el de arriba tiene que ser repetido para una nueva instalación.

    Si este es el sistema GIT, a continuación, puede utilizar las opciones en HERRAMIENTAS -> opciones
    GIt ficha para utilizar el sistema de GIT, y esto resuelve el problema en sourcetree así.

    • «si yo no incluyen toda la cadena en los certificados de archivo, a continuación, este también fallará», simplemente me encontré con este problema
    • Tan lejos como la inclusión de toda la cadena, tengo dos certificados por encima de la de github cert. Qué debo incluir en el orden como root->siguiente cert->github cert en el sslcainfo.archivo crt?
    • Yo era capaz de tener acceso repositorio git paquetes con sólo añadir la raíz cert.
    • Para los lectores futuros. Ni idea de si importa, pero yo puse la «raíz» (el superior) cert en el FINAL de la (http.sslcainfo) archivo. Y, a continuación, a medida que me fui lejos de la raíz del cert en la cadena, que me ponga cert por encima de la entrada anterior de la (http.sslcainfo) archivo.
  9. 7

    En caso de Repositorios de github (o cualquier ninguno-auto-firmado cert), eligiendo a continuación, mientras que la instalación de Git en windows, resuelto el problema.

    Incapaz de resolver

    • Le parecía haber respondido a una pregunta diferente. El OP es cuestión de que se trate de certificados autofirmados en los clientes de Windows.
    • la pregunta del título es un git mensaje de error que se muestra incluso si repo NO es SSL auto-firmado!
    • Esto me pasó el error, pero para mí el acceso a GitHub Enterprise requiere algunos de generación de claves y la adición de claves pública/privada.
    • Si el auto firmado el certificado ha sido puesto en el almacén de certificados de windows por un útil de administradores de windows a través de una directiva de grupo, a continuación, esta respuesta es también una buena.
  10. 5

    He tenido este problema antes, y resolverlo utilizando la siguiente config.


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

    Desde git 2.3.1, usted puede poner https://your.domain después de http para indicar el siguiente certificado es sólo para ti.

    • Esta es la simplicidad & más exacto de la solución que he encontrado, si usted configura también git config --global http.sslCAInfo <your-server-self-signed-cert.pem> antes (por lo tanto, causando el «no se puede obtener el local emisor de certificado de error»)
  11. 0

    Una cosa que lío me fue el formato de la ruta (en mi PC con Windows). Originalmente había esto:

    git config --global http.sslCAInfo C:\certs\cacert.pem
    

    Pero que no pudo con el «no se puede obtener el local emisor de certificado de error».

    Lo que finalmente se trabajó fue:

    git config --global http.sslCAInfo "C:\certs\cacert.pem"
    

Dejar respuesta

Please enter your comment!
Please enter your name here