¿Cómo configuro GIT_SSL_NO_VERIFY solo para repositorios específicos?

283

Tengo que usar un servidor git sin los certificados adecuados, pero no quiero tener que hacerlo

env GIT_SSL_NO_VERIFY=true git command

cada vez que hago una operación git. Pero también me gustaría dejar SSL habilitado para otros repositorios git. ¿Hay alguna manera de hacer que esto sea local para un único repositorio?

Charles Randall
fuente
f15ijp.com/2012/08/… una de las mejores soluciones que encontré
vikas etagi

Respuestas:

540

Tu puedes hacer

git config http.sslVerify false

en su repositorio específico para deshabilitar la verificación de certificados SSL solo para ese repositorio.

Joachim Isaksson
fuente
54
git config --global http.sslVerify "false"
roothahn
24
El --global NO debe usarse porque el OP ha solicitado específicamente que solo lo quiera para repositorios específicos.
Kannan Ekanath
9
Nota: Parece que la --globalopción ES necesaria cuando un repositorio aún NO está prestado (no se pueden establecer opciones para un repositorio que aún no existe localmente). Siempre se puede volver a encender después.
James Wilkins el
2
Revertí la edición, ya que la pregunta específicamente no pedía esto, además, es una mala idea deshabilitarla globalmente por razones de seguridad.
Étienne
2
Revertí la edición nuevamente, por las mismas razones que arriba. Esta pregunta es sobre un repositorio específico. Si desea una respuesta para todos los repositorios, esa debería ser una pregunta separada.
Calimo
121

Puedes hacer lo siguiente

Por un solo repositorio

git config http.sslVerify false

Para todos los repositorios

git config --global http.sslVerify false
Thirumalai murugan
fuente
77
Esto deshabilitará la verificación SSL para todos los repositorios. La pregunta original era acerca de convertirlo en local para un único repositorio.
Gwynne Raskind
44
¿Por qué en el mundo estás usando sudo? el repositorio local no lo necesita, y la configuración del usuario está en $ HOME (lo que sea que esté en su sistema) por lo que tampoco necesita sudo.
mcepl
@ParthianShot si no son los usuarios administradores, ¿cómo pueden usar esto sin sudo?
Thirumalai murugan
1
@Thirumalaimurugan ¿Hablas en serio ahora? sudosolo debe usarse cuando realmente necesita root para hacer algo. Como instalar un nuevo software, modificar archivos importantes del sistema, formatear discos, reconfigurar la red, administrar servicios ... No había nada en la pregunta de este tipo que implicara que necesitaba root para hacer algo. Si es administrador, debería ejecutar la mayoría de sus comandos, incluidos aquellos que cambian su configuración, sin sudo la mayor parte del tiempo.
Parthian Shot
1
@HolaSoyEduFelizNavidad, cuando el OP dijo "para todos los repositorios", el OP significaba "todos los repositorios para este usuario", no "todos los repositorios en la computadora".
vy32
98

Como lo que dijo Thirumalai, pero dentro del repositorio clonado y fuera --global. Es decir,

  1. GIT_SSL_NO_VERIFY=true git clone https://url
  2. cd <directory-of-the-clone>
  3. git config http.sslVerify false
mcepl
fuente
Buena solución para casos cuando ustedcould not lock global config file .gitconfig: Permission denied
antongorodezkiy
1
Si tiene permiso denegado en .gitconfig, hay algo seriamente sesgado con su sistema. Su $ HOME debería estar disponible para usted (que es donde debería estar .gitconfig, ¿no es así?).
mcepl
Este no es realmente mi servidor. Pero gracias de todos modos. Y eliminé la ruta del mensaje de error, en realidad en ese servidor, git está tratando de acceder a .gitconfig en algún lugar en/var/www/...
antongorodezkiy
Esta respuesta también tiene excelentes explicaciones sobre las opciones. stackoverflow.com/a/11622001
dragon788
2
export GIT_SSL_NO_VERIFY = true
ETech
11

En particular si necesitas clon recursivo

GIT_SSL_NO_VERIFY=true git clone --recursive https://github.com/xx/xx.git
usuario5958256
fuente
10

Si está en una máquina con Windows y tiene instalado Git, puede probar los siguientes pasos:

  1. Vaya a la carpeta de instalación de Git, por ejemplo: C: \ Archivos de programa (x86) \ Git \ etc.
  2. Edite el archivo: gitconfig
  3. En la sección [http] , agregue la línea: sslVerify = false

    [http]
      sslVerify = false
    
shasi kanth
fuente
1
Esto tampoco cumple con la pregunta anterior donde dice que no quiere afectar a otros repositorios.
bryanmac
¡Y es realmente útil cuando no puedes ejecutar comandos git! (¡ig tener sourcetree en una máquina virtual de Windows y colocar la carpeta src en una ruta UNC en la que el terminal sorcetree incorporado no puede reconocer!
danrah
1
Gracias, esto funcionó, de alguna manera la línea de comando no funcionaba.
Nrj
Para los usuarios de TortoiseGit, puede editar esta sección en el archivo de configuración local haciendo una actualización de Configuración específica del contexto y seleccionando la opción para editar solo localmente
Steve Townsend
5

Hay una manera fácil de configurar GIT para manejar su servidor de la manera correcta. Simplemente agregue una sección http específica para su servidor git y especifique en qué certificado (codificado en Base64) confiar:

~ / .gitconfig

[http "https://repo.your-server.com"]
# windows path use double back slashes
#  sslCaInfo = C:\\Users\\<user>\\repo.your-server.com.cer
# unix path to certificate (Base64 encoded)
sslCaInfo = /home/<user>/repo.your-server.com.cer

De esta forma, no tendrá más errores SSL y validará (generalmente) el certificado autofirmado. Este es el mejor camino a seguir, ya que lo protege de los ataques de hombre en el medio. Cuando solo deshabilita la verificación SSL, es vulnerable a este tipo de ataques.

https://git-scm.com/docs/git-config#git-config-httplturlgt

Matthias B
fuente
5

Si tiene que deshabilitar las comprobaciones SSL para un servidor git que aloja varios repositorios, puede ejecutar:

git config --bool --get-urlmatch http.sslverify https://my.bad.server false

(Si todavía usa git <v1.8.5, ejecute git config --global http.https://my.bad.server.sslVerify false)

Explicación de la documentación donde se encuentra el comando al final, muestra el .gitconfigcontenido como:

[http "https://my.bad.server"]
        sslVerify = false

Ignorará cualquier verificación de certificados para este servidor, sea cual sea el repositorio.

También tienes alguna explicación en el código

Mat M
fuente
4

Esto funciona para mi:

git init
git config --global http.sslVerify false
git clone https://myurl/myrepo.git
Tadej
fuente
2

Esta pregunta sigue apareciendo y aún no encontré un resultado satisfactorio, así que esto es lo que funcionó para mí (basado en una respuesta anterior https://stackoverflow.com/a/52706362/1806760 , que no funciona):

Mi servidor es https://gitlab.dev con un certificado autofirmado.

Primero ejecute git config --system --edit(desde un símbolo del sistema elevado, cambie --systema --globalsi desea hacerlo solo para su usuario), luego inserte el siguiente fragmento después de cualquier [http]sección anterior :

[http "https://gitlab.dev"]
        sslVerify = false

Luego verifique si hizo todo correctamente:

> git config --type=bool --get-urlmatch http.sslVerify https://gitlab.dev
false
mrexodia
fuente
1

para Windows, si desea una configuración global, ejecute

git config --global http.sslVerify false
176 codificación
fuente
OP solicitó specific reposexplícitamente
malat
0

En Linux, si llama a esto dentro de la carpeta del repositorio de git:

git config http.sslVerify false

esto se agregará sslVerify = falseen la [http]sección del configarchivo en la .gitcarpeta, que también puede ser la solución, si desea agregar esto manualmente con nano .git/config:

...
[http]
  sslVerify = false
rubo77
fuente