Brevemente:
- Obtenga el certificado autofirmado
- Póngalo en algún
~/git-certs/cert.pem
archivo (p . Ej. )
- Establecer
git
para confiar en este certificado utilizando el http.sslCAInfo
parámetro
En 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 puerto 443
.
Hay múltiples opciones, cómo obtenerlo.
Obtener certificado usando openssl
$ openssl s_client -connect repos.sample.com:443
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í:
-----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 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 el Export
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:
-----BEGIN CERTIFICATE-----
MIIDnzCCAocCBE/xnXAwDQYJKoZIhvcNAQEFBQAwgZMxCzAJBgNVBAYTAkRFMRUw
...........
/27/jIdVQIKvHok2P/u9tvTUQA==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
AnOtHeRtRuStEdCeRtIfIcAtEgOeShErExxxxxxxxxxxxxxxxxxxxxxxxxxxxxxw
...........
/27/jIdVQIKvHok2P/u9tvTUQA==
-----END CERTIFICATE-----
Esto funcionará (pero lo probé solo con un solo certificado).
Configure git para confiar en este certificado
$ git config --global http.sslCAInfo /home/javl/git-certs/cert.pem
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:
$ git config --global http.sslVerify false #NO NEED TO USE THIS
Si ya configuró su git para ignorar los certificados SSL, deshabilítelo:
$ git config --global --unset http.sslVerify
y también puede verificar que lo hizo todo correctamente, sin errores ortográficos:
$ git config --global --list
lo que debería enumerar todas las variables, lo ha configurado globalmente. (Escribí mal http a htt).