El administrador del sistema para un proyecto en el que estoy ha decidido que SSH es "demasiado problema"; en su lugar, ha configurado Git para que sea accesible a través de una https://URL (y autenticación de nombre de usuario / contraseña). El servidor para esta URL presenta un certificado autofirmado, por lo que aconsejó a todos desactivar la validación del certificado. Esto no me parece una buena configuración, en cuanto a seguridad.
¿Es posible decirle a Git que para X remoto (o mejor, cualquier control remoto en cualquier repositorio que empiece https://$SERVERNAME/) es aceptar un certificado en particular, y solo ese certificado? Básicamente reduplicate el comportamiento de la clave del servidor SSH.
                    
                        git
                                ssl-certificate
                                
                    
                    
                        zwol
fuente
                
                fuente

Respuestas:
Brevemente:
~/git-certs/cert.pemarchivo (p . Ej. )gitpara confiar en este certificado utilizando elhttp.sslCAInfoparámetroEn mas detalles:
Obtenga un certificado autofirmado del servidor remoto
Suponiendo que la URL del servidor es
repos.sample.comy desea acceder a ella a través del puerto443.Hay múltiples opciones, cómo obtenerlo.
Obtener certificado usando openssl
Capture la salida en un archivo
cert.pemy elimine todo menos parte entre (e incluyendo)-BEGIN CERTIFICATE-y-END CERTIFICATE-El contenido del archivo resultante ~ / git-certs / cert.pem puede verse así:
Obtenga un certificado utilizando su navegador web
Uso Redmine con repositorios Git y accedo a la misma URL para la interfaz de usuario web y para el acceso a la línea de comandos git. De esta manera, tuve que agregar una excepción para ese dominio en mi navegador web.
Utilizando Firefox, fui
Options -> Advanced -> Certificates -> View Certificates -> Servers, encontré el host autofirmado, lo seleccioné y, usando elExportbotón, obtuve exactamente el mismo archivo, tal como lo creéopenssl.Nota: Me sorprendió un poco, no se menciona visiblemente el nombre de la autoridad. Esto esta bien.
Tener el certificado de confianza en un archivo dedicado
Los pasos anteriores darán lugar a tener el certificado en algún archivo. No importa qué archivo sea, siempre que sea visible para su git al acceder a ese dominio. solía
~/git-certs/cert.pemNota: Si necesita más certificados autofirmados de confianza, colóquelos en el mismo archivo:
Esto funcionará (pero lo probé solo con un solo certificado).
Configure git para confiar en este certificado
También puede intentar hacer ese sistema en todo el sistema, utilizando en
--systemlugar de--global.Y pruébelo: ahora podrá comunicarse con su servidor sin tener que recurrir a:
Si ya configuró su git para ignorar los certificados SSL, deshabilítelo:
y también puede verificar que lo hizo todo correctamente, sin errores ortográficos:
lo que debería enumerar todas las variables, lo ha configurado globalmente. (Escribí mal http a htt).
fuente
Ajustes del usuario OSX.
Seguir los pasos de la respuesta aceptada funcionó para mí con una pequeña adición al configurar en OSX.
Puse el
cert.pemarchivo en un directorio debajo de mi usuario registrado de OSX y, por lo tanto, me hizo ajustar la ubicación del certificado de confianza.Configure git para confiar en este certificado:
fuente