tipos tag remove practices etiquetas crear best git ssl-certificate

practices - git tag remove



configurar Git para que acepte un certificado de servidor autofirmado en particular para un control remoto https en particular (3)

Ajustes de usuario OSX.

Seguir los pasos de la respuesta aceptada funcionó para mí con una pequeña adición al configurar en OSX.

Puse el archivo cert.pem en un directorio debajo de mi usuario con sesión OSX y por eso me obligué a ajustar la ubicación para el certificado de confianza.

Configura git para confiar en este certificado:

$ git config --global http.sslCAInfo $ HOME / git-certs / cert.pem

El administrador del sistema para un proyecto en el que estoy ha decidido que SSH es "demasiado problema"; en su lugar, configuró Git para ser accesible a través de una URL https:// (y autenticación de nombre de usuario / contraseña). El servidor de esta URL presenta un certificado autofirmado, por lo que aconseja a todos que desactiven la validación de certificados. Esto no me parece una buena configuración, en cuanto a seguridad.

¿Es posible decirle a Git que para X remota (o mejor, cualquier control remoto en cualquier repositorio que empiece por https://$SERVERNAME/ ) es para aceptar un certificado en particular, y solo ese certificado? Básicamente reduplicar el comportamiento de la clave de servidor de SSH.


Brevemente:

  1. Obtenga el certificado autofirmado
  2. Póngalo en algún archivo (ej. ~/git-certs/cert.pem )
  3. Establezca git para confiar en este certificado utilizando el parámetro http.sslCAInfo

En más detalles:

Obtenga un certificado autofirmado de servidor remoto

Asumiendo, la URL del servidor es repos.sample.com y desea acceder a ella a través del puerto 443 .

Hay múltiples opciones, como obtenerlo.

Obtener certificado usando openssl

$ openssl s_client -connect repos.sample.com:443

cert.pem el resultado en un archivo cert.pem y elimine todo menos parte entre (e incluido) -BEGIN CERTIFICATE- y -END CERTIFICATE-

El contenido del archivo resultante ~ / git-certs / cert.pem puede verse así:

-----BEGIN CERTIFICATE----- MIIDnzCCAocCBE/xnXAwDQYJKoZIhvcNAQEFBQAwgZMxCzAJBgNVBAYTAkRFMRUw EwYDVQQIEwxMb3dlciBTYXhvbnkxEjAQBgNVBAcTCVdvbGZzYnVyZzEYMBYGA1UE ChMPU2FhUy1TZWN1cmUuY29tMRowGAYDVQQDFBEqLnNhYXMtc2VjdXJlLmNvbTEj MCEGCSqGSIb3DQEJARYUaW5mb0BzYWFzLXNlY3VyZS5jb20wHhcNMTIwNzAyMTMw OTA0WhcNMTMwNzAyMTMwOTA0WjCBkzELMAkGA1UEBhMCREUxFTATBgNVBAgTDExv d2VyIFNheG9ueTESMBAGA1UEBxMJV29sZnNidXJnMRgwFgYDVQQKEw9TYWFTLVNl Y3VyZS5jb20xGjAYBgNVBAMUESouc2Fhcy1zZWN1cmUuY29tMSMwIQYJKoZIhvcN AQkBFhRpbmZvQHNhYXMtc2VjdXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEP ADCCAQoCggEBAMUZ472W3EVFYGSHTgFV0LR2YVE1U//sZimhCKGFBhH3ZfGwqtu7 mzOhlCQef9nqGxgH+U5DG43B6MxDzhoP7R8e1GLbNH3xVqMHqEdcek8jtiJvfj2a pRSkFTCVJ9i0GYFOQfQYV6RJ4vAunQioiw07OmsxL6C5l3K/r+qJTlStpPK5dv4z Sy+jmAcQMaIcWv8wgBAxdzo8UVwIL63gLlBz7WfSB2Ti5XBbse/83wyNa5bPJPf1 U+7uLSofz+dehHtgtKfHD8XpPoQBt0Y9ExbLN1ysdR9XfsNfBI5K6Uokq/tVDxNi SHM4/7uKNo/4b7OP24hvCeXW8oRyRzpyDxMCAwEAATANBgkqhkiG9w0BAQUFAAOC AQEAp7S/E1ZGCey5Oyn3qwP4q+geQqOhRtaPqdH6ABnqUYHcGYB77GcStQxnqnOZ MJwIaIZqlz+59taB6U2lG30u3cZ1FITuz+fWXdfELKPWPjDoHkwumkz3zcCVrrtI ktRzk7AeazHcLEwkUjB5Rm75N9+dOo6Ay89JCcPKb+tNqOszY10y6U3kX3uiSzrJ ejSq/tRyvMFT1FlJ8tKoZBWbkThevMhx7jk5qsoCpLPmPoYCEoLEtpMYiQnDZgUc TNoL1GjoDrjgmSen4QN5QZEGTOe/dsv1sGxWC+Tv/VwUl2GqVtKPZdKtGFqI8TLn /27/jIdVQIKvHok2P/u9tvTUQA== -----END CERTIFICATE-----

Obtenga un certificado usando su navegador web

Uso Redmine con repositorios de Git y accedo a la misma URL para la interfaz de usuario web y para el acceso a la línea de comandos de git. De esta forma, tuve que agregar una excepción para ese dominio en mi navegador web.

Usando Firefox, fui a Options -> Advanced -> Certificates -> View Certificates -> Servers , encontré el host autofirmado, lo seleccioné y utilicé el botón Export Obtuve exactamente el mismo archivo, como el creado usando openssl .

Nota: estaba un poco sorprendido, no hay ningún nombre de la autoridad visiblemente mencionado. Esto esta bien.

Tener el certificado de confianza en el archivo dedicado

Los pasos anteriores darán como resultado tener el certificado en algún archivo. No importa, qué archivo es, siempre y cuando sea visible para su git cuando acceda a ese dominio. ~/git-certs/cert.pem

Nota: si necesita más certificados autofirmados de confianza, colóquelos en el mismo archivo:

-----BEGIN CERTIFICATE----- MIIDnzCCAocCBE/xnXAwDQYJKoZIhvcNAQEFBQAwgZMxCzAJBgNVBAYTAkRFMRUw ........... /27/jIdVQIKvHok2P/u9tvTUQA== -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- AnOtHeRtRuStEdCeRtIfIcAtEgOeShErExxxxxxxxxxxxxxxxxxxxxxxxxxxxxxw ........... /27/jIdVQIKvHok2P/u9tvTUQA== -----END CERTIFICATE-----

Esto funcionará (pero lo probé solo con certificado único).

Configura git para confiar en este certificado

$ git config --global http.sslCAInfo /home/javl/git-certs/cert.pem

También puede intentar hacer todo ese sistema, usando --system lugar de --global .

Y pruébelo: ahora podrá comunicarse con su servidor sin recurrir a:

$ git config --global http.sslVerify false #NO NEED TO USE THIS

Si ya configura su git como ignorante de los certificados ssl, desactívelo:

$ git config --global --unset http.sslVerify

y también puedes verificar que lo hiciste todo correctamente, sin errores ortográficos:

$ git config --global --list

¿Qué debería enumerar todas las variables, que ha establecido globalmente? (He escrito mal http a htt).


De acuerdo con esta página en aeminium.org , debe agregar un elemento de configuración http.sslCAInfo o http.sslCAPath a .git / config, que contiene el certificado del servidor web.