Brevemente:
- Ottieni il certificato autofirmato
- Mettilo in un
~/git-certs/cert.pem
file (ad es. )
- Imposta
git
come attendibile questo certificato usando il http.sslCAInfo
parametro
Più in dettaglio:
Ottieni il certificato autofirmato del server remoto
Supponendo, l'URL del server è repos.sample.com
e si desidera accedervi tramite la porta443
.
Ci sono più opzioni, come ottenerlo.
Ottieni il certificato usando openssl
$ openssl s_client -connect repos.sample.com:443
Cattura l'output in un file cert.pem
ed elimina tutto tranne (tra)-BEGIN CERTIFICATE-
e-END CERTIFICATE-
Il contenuto del file risultante ~ / git-certs / cert.pem può essere simile al seguente:
-----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-----
Ottieni il certificato utilizzando il tuo browser web
Uso Redmine con i repository Git e accedo allo stesso URL per l'interfaccia utente Web e per l'accesso alla riga di comando git. In questo modo, ho dovuto aggiungere un'eccezione per quel dominio nel mio browser web.
Usando Firefox, sono andato a, ho Options -> Advanced -> Certificates -> View Certificates -> Servers
trovato lì l'host autofirmato, l'ho selezionato e usando il Export
pulsante ho ottenuto esattamente lo stesso file, come creato usandoopenssl
.
Nota: sono rimasto un po 'sorpreso, non c'è un nome dell'autorità menzionato in modo visibile. Questo va bene.
Avere il certificato attendibile nel file dedicato
I passaggi precedenti comportano la presenza del certificato in alcuni file. Non importa quale file sia, purché sia visibile a Git quando si accede a quel dominio. ero solito~/git-certs/cert.pem
Nota: se hai bisogno di certificati autofirmati più affidabili, inseriscili nello stesso file:
-----BEGIN CERTIFICATE-----
MIIDnzCCAocCBE/xnXAwDQYJKoZIhvcNAQEFBQAwgZMxCzAJBgNVBAYTAkRFMRUw
...........
/27/jIdVQIKvHok2P/u9tvTUQA==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
AnOtHeRtRuStEdCeRtIfIcAtEgOeShErExxxxxxxxxxxxxxxxxxxxxxxxxxxxxxw
...........
/27/jIdVQIKvHok2P/u9tvTUQA==
-----END CERTIFICATE-----
Funzionerà (ma l'ho provato solo con un singolo certificato).
Configura git per fidarti di questo certificato
$ git config --global http.sslCAInfo /home/javl/git-certs/cert.pem
Puoi anche provare a fare tutto quel sistema, usando --system
invece di --global
.
E testalo: ora sarai in grado di comunicare con il tuo server senza ricorrere a:
$ git config --global http.sslVerify false #NO NEED TO USE THIS
Se hai già impostato il tuo git sull'ignoranza dei certificati SSL, disattivalo:
$ git config --global --unset http.sslVerify
e puoi anche verificare che hai fatto tutto correttamente, senza errori di ortografia:
$ git config --global --list
cosa dovrebbe elencare tutte le variabili, hai impostato a livello globale. (Ho sbagliato a scrivere http su htt).