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ónC:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
. - Verifique que el texto cert en el archivo
MyCert.cer
esté en el archivoca-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 clavehttp.sslCAinfo
en[Git installdir]/etc/gitconfig
). - Git para Windows> = 2.0:
[Git installdir]/mingwXX/ssl/certs/ca-bundle.crt
dondeXX
representa32
o64
(por ejemplo,C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
; configurado por la clavehttp.sslCAinfo
enC:/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:
- Abra la URL del sitio en Internet Explorer
- 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")
- (Opcional) Seleccione el certificado en el que desea confiar en la cadena de certificados (tercera pestaña) y ábralo
- Ve a la segunda pestaña "Detalles"
- 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).
Ahora tienes varias opciones
- 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. - 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. - 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, portype [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
- Use una tienda de certificados de confianza separada que solo contenga el certificado recién descargado, ejecutando
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 ).