usuario tag repositorio que crear cambiar git ssl tortoisegit gitblit

tag - Certificado SSL no válido al presionar al servidor de Git



git push tag (4)

Estoy ejecutando Gitblit en un servidor de Windows y estoy tratando de enviar datos a un repositorio desde otra máquina en la red. He usado un certificado SSL (no firmado por mí mismo, pero creo que lo firmé mi empresa) No estoy muy seguro de cómo funciona, pero Chrome, IE, etc. ven que está verificado por la identidad).

El servidor que ejecuta Gitblit se llama itscm y en el escritorio del desarrollador estoy usando esta URL para enviar datos a través de TortoiseGit:

git.exe push --progress "https://itscm:8234/git/TestRepo.git" master

Sin embargo, me sale este error:

fatal: no se puede acceder a '' https://itscm:8234/git/TestRepo.git/ '': problema del certificado SSL: certificado autofirmado en la cadena de certificados

Cuando voy a esa dirección en cromo, obtengo un 404 en la página, PERO puedo ver que el candado en la barra de la URL es verde. Cuando hago clic en el candado, veo que la identidad está verificada. No entiendo cómo mi navegador ve este certificado como válido, pero cuando intento enviar datos a través de Git, falla.


Es probable que TortoiseGit no esté utilizando el mismo almacén de confianza de Chrome. Creo que Chrome usa la tienda del sistema, Firefox usa la suya. No tengo idea de lo que usa TortoiseGit.

En el cliente, si configuras git config http.sslVerify false es posible que tengas más suerte. También puedes configurar esto globalmente .


Esto es lo que funcionó para mí. Crea una carpeta C:/GitCerts . A continuación, descargue el archivo Base64 .cer (siga la respuesta proporcionada por MrTux ) a esta carpeta C:/GitCerts .

  • Desde la línea de comandos, ejecute el siguiente comando: git config --global http.sslCAinfo "C:/GitCerts/MyCert.cer"
  • Abra el archivo MyCert.cer en el Bloc de notas y déjelo abierto
  • Abra el archivo Git ca-bundle.crt en otro Bloc de notas. El mío estaba en la ubicación C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt .
  • Verifique que el texto cert en el archivo MyCert.cer esté en el archivo ca-bundle.crt (debería ser), si no solo copie y pegue todo el texto de MyCert.cer y añádalo en la parte inferior del paquete ca-bundle. archivo crt (asegúrese de dejar toda la información del otro certificado allí).

----- BEGIN CERTIFICATE -----

su información de cert aquí

----- FIN CERTIFICADO -----

  • Si tuvo que modificar el archivo ca-bundle.crt, guárdelo (puede que tenga que guardarlo en su escritorio y luego copiarlo y pegarlo nuevamente para sobrescribir el archivo ca-bundle.crt )
  • Finalmente, según la ruta de su archivo ca-bundle.crt , ejecute el siguiente comando: git config --global http.sslcainfo "C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt"

Git para Windows tiene su propio almacén de confianza de certificados de confianza que normalmente se encuentra en el archivo

  • Git para Windows <= 1.9: [Git installdir]/bin/curl-ca-bundle.crt (por ejemplo, C:/Program Files (x86)/Git/bin/curl-ca-bundle.crt ; configurado por la clave http.sslCAinfo en [Git installdir]/etc/gitconfig ).
  • Git para Windows> = 2.0: [Git installdir]/mingwXX/ssl/certs/ca-bundle.crt donde XX representa 32 o 64 (por ejemplo, C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt ; configurado por la clave http.sslCAinfo en C:/ProgramData/Git/config ).

Desactivar la verificación de certificados (por ejemplo, configurando git config http.sslVerify false ) no es una buena idea y podría ser extremadamente peligroso (ya que todas las comprobaciones de seguridad están deshabilitadas y los ataques de MitM son fácilmente posibles, dependiendo de dónde esté esto se aplica a todos los nuevos https conexiones).

Para agregar un certificado (puede ser uno autofirmado u otro certificado raíz) a esta tienda de confianza para confiar automáticamente en él, debe realizar los siguientes pasos:

  1. Abra la URL del sitio en Internet Explorer
  2. Haga clic en el símbolo de candado en la barra local y seleccione "Mostrar certificados" (o elija Propiedades del sitio y haga clic en "Certificados")
  3. (Opcional) Seleccione el certificado en el que desea confiar en la cadena de certificados (tercera pestaña) y ábralo
  4. Ve a la segunda pestaña "Detalles"
  5. Haga clic en "Guardar en archivo", elija "X.509 codificado en Base64 (.CER)" y guárdelo con un nombre único (recuerde ese nombre; se recomienda un nombre sin espacios).
  6. Ahora tienes varias opciones

    1. Use una tienda de certificados de confianza separada que solo contenga el certificado recién descargado, ejecutando git config --global http.sslCAinfo "[yourfilename]" en un cli shell para usar solo este certificado como el almacén de confianza.
    2. Utilice una tienda de certificados de confianza separada que contenga el certificado recién descargado y todos los certificados de la tienda git trust, agregando todo el contenido del archivo de almacenamiento de confianza del sistema (ruta más arriba) y luego ejecute git config --global http.sslCAinfo "[yourfilename]" en un shell cli para usar esta nueva tienda de confianza.
    3. Actualice el archivo de certificado del sistema, agregando el contenido del archivo que acaba de guardar a [path-to-git-trust-store-crt-file] (por ejemplo, por type [yourfilename] >> [path-to-git-trust-store-crt-file] en un shell cli que se ejecuta con derechos administrativos) O usando el bloc de notas (haga una copia del archivo ca-bundle.crt en el escritorio, agregue el contenido del archivo .crt downlaoded y cópielo de nuevo). Desventaja: los cambios pueden sobrescribirse en la actualización de git

Hecho. Ahora, este certificado está en el almacén de confianza de Git para Windows.


Para aquellos en una corporación , que obtienen el error autocertificado del certificado, a continuación hay una alternativa.

En corporaciones, el mismo servidor de git, que es accesible a través del protocolo https, generalmente también será accesible a través del protocolo ssh. Así que elige la opción ssh de la URL del servidor y clona el repositorio como

git clone user@server/project.git

Por supuesto, la clave pública ( id_rsa.pub ) de su carpeta ~/.ssh deberá agregarse al servidor. De esta forma, no tiene que agregar el certificado del servidor https a su almacén de certificados de Windows o mac keychain ( example ).