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.pem
archivo (p . Ej. )git
para confiar en este certificado utilizando elhttp.sslCAInfo
parámetroEn mas detalles:
Obtenga un certificado autofirmado del servidor remoto
Suponiendo que la URL del servidor es
repos.sample.com
y 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.pem
y 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 elExport
botó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.pem
Nota: 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
--system
lugar 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.pem
archivo 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