tipos tag remove practices etiquetas crear best git version-control https self-signed

remove - git tag best practices



¿Cómo puedo hacer que git acepte un certificado autofirmado? (12)

.Gitconfig global para autoridades de certificados autofirmados

Por mi propio bien y el de mis colegas aquí es cómo conseguimos que los certificados autofirmados funcionaran sin deshabilitar sslVerify . Edite su .gitconfig para usar git config --global -e agregue estos:

# Specify the scheme and host as a ''context'' that only these settings apply # Must use Git v1.8.5+ for these contexts to work [credential "https://your.domain.com"] username = user.name # Uncomment the credential helper that applies to your platform # Windows # helper = manager # OSX # helper = osxkeychain # Linux (in-memory credential helper) # helper = cache # Linux (permanent storage credential helper) # https://askubuntu.com/a/776335/491772 # Specify the scheme and host as a ''context'' that only these settings apply # Must use Git v1.8.5+ for these contexts to work [http "https://your.domain.com"] ################################## # Self Signed Server Certificate # ################################## # MUST be PEM format # Some situations require both the CAPath AND CAInfo sslCAInfo = /path/to/selfCA/self-signed-certificate.crt sslCAPath = /path/to/selfCA/ sslVerify = true ########################################### # Private Key and Certificate information # ########################################### # Must be PEM format and include BEGIN CERTIFICATE / END CERTIFICATE, # not just the BEGIN PRIVATE KEY / END PRIVATE KEY for Git to recognise it. sslCert = /path/to/privatekey/myprivatecert.pem # Even if your PEM file is password protected, set this to false. # Setting this to true always asks for a password even if you don''t have one. # When you do have a password, even with this set to false it will prompt anyhow. sslCertPasswordProtected = 0

Referencias:

Especifique config cuando git clone -ing

Si necesita aplicarlo por repo, la documentación le indica que simplemente ejecute git config --local en su directorio de repos. Bueno, eso no es útil cuando no tienes el repositorio clonado localmente, ¿no es así?

Puedes hacer el global -> local hokey-pokey global configurando tu configuración global como se indica arriba y luego copiar esas configuraciones a tu configuración de repositorio local una vez que clone ...

O lo que puede hacer es especificar los comandos de configuración en el git clone que se aplican al repositorio de destino una vez que se clona.

# Declare variables to make clone command less verbose OUR_CA_PATH=/path/to/selfCA/ OUR_CA_FILE=$OUR_CA_PATH/self-signed-certificate.crt MY_PEM_FILE=/path/to/privatekey/myprivatecert.pem SELF_SIGN_CONFIG="-c http.sslCAPath=$OUR_CA_PATH -c http.sslCAInfo=$OUR_CA_FILE -c http.sslVerify=1 -c http.sslCert=$MY_PEM_FILE -c http.sslCertPasswordProtected=0" # With this environment variable defined it makes subsequent clones easier if you need to pull down multiple repos. git clone $SELF_SIGN_CONFIG https://mygit.server.com/projects/myproject.git myproject/

Un trazador de líneas

EDITAR: vea la answer VonC que señala una advertencia sobre las rutas absolutas y relativas para versiones específicas de git de 2.14.x / 2.15 a este único forro

git clone -c http.sslCAPath="/path/to/selfCA" -c http.sslCAInfo="/path/to/selfCA/self-signed-certificate.crt" -c http.sslVerify=1 -c http.sslCert="/path/to/privatekey/myprivatecert.pem" -c http.sslCertPasswordProtected=0 https://mygit.server.com/projects/myproject.git myproject/

CentOS unable to load client key

Si está intentando esto en CentOS y su archivo .pem está dando

unable to load client key: "-8178 (SEC_ERROR_BAD_KEY)"

Entonces querrá esta respuesta de StackOverflow sobre cómo curl utiliza NSS en lugar de Open SSL.

Y te gustará querer reconstruir curl desde la fuente :

git clone http://github.com/curl/curl.git curl/ cd curl/ # Need these for ./buildconf yum install autoconf automake libtool m4 nroff perl -y #Need these for ./configure yum install openssl-devel openldap-devel libssh2-devel -y ./buildconf su # Switch to super user to install into /usr/bin/curl ./configure --with-openssl --with-ldap --with-libssh2 --prefix=/usr/ make make install

reinicie la computadora ya que libcurl todavía está en la memoria como una biblioteca compartida

Python, pip y conda

Relacionado : ¿Cómo agregar un certificado CA Root personalizado a la tienda de CA que usa Python en Windows?

Usando Git, ¿hay alguna manera de decirle que acepte un certificado autofirmado?

Estoy usando un servidor https para alojar un servidor git pero por ahora el certificado está autofirmado.

Cuando intento crear el repositorio por primera vez:

git push origin master -f

Me sale el error

error: Cannot access URL https://the server/git.aspx/PocketReferences/, return code 22 fatal: git-http-push failed


Aceptar permanentemente un certificado específico.

Pruebe http.sslCAPath o http.sslCAInfo . La respuesta de Adam Spires da algunos grandes ejemplos. Esta es la solución más segura a la pregunta.

Para deshabilitar la verificación TLS / SSL para un solo comando git

intente pasar de -c a git con la variable de configuración adecuada, o use la respuesta de Flow :

git -c http.sslVerify=false clone https://example.com/path/to/git

Para deshabilitar la verificación SSL para un repositorio específico

Si el repositorio está completamente bajo su control, puede probar:

git config http.sslVerify false

Deshabilitar la verificación del certificado TLS (/ SSL) globalmente es una práctica terriblemente insegura. No lo hagas No emita el comando anterior con un modificador --global .

Hay bastantes opciones de configuración SSL en git . Desde la página man de git config :

http.sslVerify Whether to verify the SSL certificate when fetching or pushing over HTTPS. Can be overridden by the GIT_SSL_NO_VERIFY environment variable. http.sslCAInfo File containing the certificates to verify the peer with when fetching or pushing over HTTPS. Can be overridden by the GIT_SSL_CAINFO environment variable. http.sslCAPath Path containing files with the CA certificates to verify the peer with when fetching or pushing over HTTPS. Can be overridden by the GIT_SSL_CAPATH environment variable.

Algunas otras opciones de configuración SSL útiles:

http.sslCert File containing the SSL certificate when fetching or pushing over HTTPS. Can be overridden by the GIT_SSL_CERT environment variable. http.sslKey File containing the SSL private key when fetching or pushing over HTTPS. Can be overridden by the GIT_SSL_KEY environment variable. http.sslCertPasswordProtected Enable git''s password prompt for the SSL certificate. Otherwise OpenSSL will prompt the user, possibly many times, if the certificate or private key is encrypted. Can be overridden by the GIT_SSL_CERT_PASSWORD_PROTECTED environment variable.


Ejecuta el siguiente comando:

git config --global http.sslVerify false


En el archivo .gitconfig puede agregar el siguiente valor dado para que el certificado autofirmado sea aceptable

sslCAInfo = /home/XXXX/abc.crt


Esta respuesta es un extracto de este artículo escrito por Michael Kauffman.

Utilice Git para Windows con un certificado SSL corporativo

Asunto :

Si tiene un certificado SSL corporativo y desea clonar su repositorio desde la consola o VSCode, obtendrá el siguiente error:

fatal: no https://myserver/tfs/DefaultCollection/_git/Proj/ acceder a '' https://myserver/tfs/DefaultCollection/_git/Proj/ '': Problema de certificado SSL: no se puede obtener el certificado del emisor local

Solución :

  1. Exportar el certificado autofirmado de la raíz a un archivo. Puedes hacerlo desde tu navegador.

  2. Localice el archivo "ca-bundle.crt" en su carpeta de git (versión actual C: / Archivos de programa / Git / usr / ssl / certs, pero ha cambiado en el pasado). Copia el archivo a tu perfil de usuario. Ábralo con un editor de texto como VSCode y agregue el contenido de su certificado exportado al final del archivo.

Ahora tenemos que configurar git para usar el nuevo archivo:

git config --global http.sslCAInfo C:/Users/<yourname>/ca-bundle.crt

Esto agregará la siguiente entrada a su archivo .gitconfig en la raíz de su perfil de usuario.

[http] sslCAInfo = C:/Users/<yourname>/ca-bundle.crt


Lo hago así:

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


No soy un gran fanático de [EDIT: versiones originales de las] respuestas existentes, porque deshabilitar los controles de seguridad debería ser un último recurso, no la primera solución ofrecida. Aunque no puede confiar en los certificados autofirmados en el primer recibo sin algún método adicional de verificación, usar el certificado para las siguientes operaciones de git al menos hace la vida mucho más difícil para los ataques que solo ocurren después de haber descargado el certificado. En otras palabras, si el certificado que descargó es genuino, estará bien a partir de ese momento. En cambio, si simplemente deshabilitas la verificación, estás abierto a cualquier tipo de ataque de hombre en el medio en cualquier momento .

Para dar un ejemplo específico: el famoso repositorio repo.or.cz proporciona un certificado autofirmado . Puedo descargar ese archivo, colocarlo en algún lugar como /etc/ssl/certs , y luego hacer:

# Initial clone GIT_SSL_CAINFO=/etc/ssl/certs/rorcz_root_cert.pem / git clone https://repo.or.cz/org-mode.git # Ensure all future interactions with origin remote also work cd org-mode git config http.sslCAInfo /etc/ssl/certs/rorcz_root_cert.pem

Tenga en cuenta que usar la git config local aquí (es decir, sin --global ) significa que este certificado autofirmado solo es de confianza para este repositorio en particular, lo cual es bueno. También es mejor que usar GIT_SSL_CAPATH ya que elimina el riesgo de que git realice la verificación a través de una Autoridad de Certificación diferente que podría estar comprometida.


Puede establecer GIT_SSL_NO_VERIFY en true :

GIT_SSL_NO_VERIFY=true git clone https://example.com/path/to/git

o, alternativamente, configure Git para no verificar la conexión en la línea de comando:

git -c http.sslVerify=false clone https://example.com/path/to/git

Tenga en cuenta que si no verifica los certificados SSL / TLS, entonces es susceptible a los ataques MitM .


Sigo encontrando este problema, así que escribí un script para descargar el certificado autofirmado del servidor e instalarlo en ~ / .gitcerts, luego actualizar git-config para que apunte a estos certificados. Se almacena en la configuración global, por lo que solo necesita ejecutarlo una vez por control remoto.

https://github.com/iwonbigbro/tools/blob/master/bin/git-remote-install-cert.sh


Tenga cuidado cuando use un forro usando sslKey o sslCert, como en la answer :

git clone -c http.sslCAPath="/path/to/selfCA" / -c http.sslCAInfo="/path/to/selfCA/self-signed-certificate.crt" / -c http.sslVerify=1 / -c http.sslCert="/path/to/privatekey/myprivatecert.pem" / -c http.sslCertPasswordProtected=0 / https://mygit.server.com/projects/myproject.git myproject

Solo Git 2.14.x / 2.15 (Q3 2015) podría interpretar correctamente una ruta como ~username/mykey (mientras que todavía puede interpretar una ruta absoluta como /path/to/privatekey ).

Ver commit 8d15496 (20 jul 2017) por Junio ​​C Hamano ( gitster ) .
Ayudado por: Charles Bailey ( hashpling ) .
(Fusionado por Junio ​​C Hamano - gitster - in commit 17b1e1d , 11 de agosto de 2017)

http.c : http.sslcert y http.sslkey son http.sslkey acceso

Anteriormente, cuando se creó la ruta de acceso http_options () moderna para analizar varias opciones de http. * En 29508e1 ("Aislar la funcionalidad de solicitud HTTP compartida", 2005-11-18, Git 0.99.9k), y luego se corrigió la interación entre el múltiple archivos de configuración en 7059cd9 (" http_init() : arreglo del archivo de configuración de análisis", 2009-03-09, Git 1.6.3-rc0), analizamos variables de configuración como http.sslkey , http.sslcert como cadenas de vainilla git_config_pathname() , porque git_config_pathname() que entiende que el prefijo " ~[username]/ " no existía.

Más tarde, convertimos algunos de ellos (a saber, http.sslCAPath y http.sslCAInfo ) para usar la función, y agregamos variables como http.cookeyFile http.pinnedpubkey para usar la función desde el principio. Debido a eso, todas estas variables comprenden el prefijo " ~[username]/ ".

Haga que las dos variables restantes, http.sslcert y http.sslkey , también conozcan la convención, ya que ambas son claramente rutas de acceso a los archivos.


Usando la versión de 64 bits de Git en Windows, solo agregue el certificado CA autofirmado en estos archivos:

  • C: / Archivos de programa / Git / mingw64 / ssl / certs / ca-bundle.crt
  • C: / Archivos de programa / Git / mingw64 / ssl / certs / ca-bundle.trust.crt

Si es solo un certificado autofirmado del servidor, agréguelo a

  • C: / Archivos de programa / Git / mingw64 / ssl / cert.pem

Verifique la configuración de su antivirus y firewall.

De un día para otro, git ya no funcionaba. Con lo que se describe anteriormente, encontré que Kaspersky coloca un certificado raíz personal de antivirus autofirmado en el medio. No logré que Git aceptara ese certificado siguiendo las instrucciones anteriores. Me rendí a eso. Lo que me funciona es deshabilitar la función para escanear conexiones cifradas.

  1. Abre Kaspersky
  2. Configuración> Adicional> Red> No escanear conexiones cifradas

Después de esto, git funciona de nuevo con sslVerify habilitado.

Nota. Esto todavía no es satisfactorio para mí, porque me gustaría tener esa función de mi Anti-Virus activa. En la configuración avanzada, Kaspersky muestra una lista de sitios web que no funcionarán con esa función. Github no está listado como uno de ellos. Lo comprobaré en el foro de Kaspersky. Parece que hay algunos temas, por ejemplo, https://forum.kaspersky.com/index.php?/topic/395220-kis-interfering-with-git/&tab=comments#comment-2801211