Kısaca:
- Kendinden imzalı sertifika alın
- Bazı (örneğin
~/git-certs/cert.pem
) bir dosyaya koyun
- Parametre
git
kullanarak bu sertifikaya güvenecek şekilde ayarlahttp.sslCAInfo
Daha ayrıntılı olarak:
Uzak sunucunun kendinden imzalı sertifikasını edinin
Varsayarsak, sunucu URL'si repos.sample.com
bağlantı noktası üzerinden erişilir 443
.
Birden fazla seçenek var, nasıl alınır.
Openssl kullanarak sertifika alma
$ openssl s_client -connect repos.sample.com:443
Bir dosya içine çıktı yakala cert.pem
ve (dahil ve) tüm ama bir kısmını arasında silmek -BEGIN CERTIFICATE-
ve-END CERTIFICATE-
Oluşan ~ / git-certs / cert.pem dosyasının içeriği şöyle görünebilir:
-----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-----
Web tarayıcınızı kullanarak sertifika alın
Git depolarıyla Redmine kullanıyorum ve web kullanıcı arayüzü ve git komut satırı erişimi için aynı URL'ye erişiyorum. Bu şekilde, web tarayıcma bu alan için istisna eklemek zorunda kaldım.
Firefox kullanarak gittim Options -> Advanced -> Certificates -> View Certificates -> Servers
, orada kendinden imzalı bir ana bilgisayar buldum, onu seçtim ve Export
düğmesini kullanarak oluşturduğum dosyayla tam olarak aynı dosyayı aldım openssl
.
Not: Biraz şaşırdım, görünürde bahsedilen otoritenin adı yok. Bu iyi.
Güvenilir sertifikanın özel dosyada bulunması
Önceki adımlar, sertifikanın bir dosyaya sahip olmasına neden olacaktır. Bu etki alanına erişirken git'iniz tarafından görülebildiği sürece hangi dosya olduğu önemli değil. kullandım~/git-certs/cert.pem
Not: Daha güvenilir, kendinden imzalı sertifikalara ihtiyacınız varsa, bunları aynı dosyaya yerleştirin:
-----BEGIN CERTIFICATE-----
MIIDnzCCAocCBE/xnXAwDQYJKoZIhvcNAQEFBQAwgZMxCzAJBgNVBAYTAkRFMRUw
...........
/27/jIdVQIKvHok2P/u9tvTUQA==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
AnOtHeRtRuStEdCeRtIfIcAtEgOeShErExxxxxxxxxxxxxxxxxxxxxxxxxxxxxxw
...........
/27/jIdVQIKvHok2P/u9tvTUQA==
-----END CERTIFICATE-----
Bu işe yarayacaktır (ancak sadece tek bir sertifika ile test ettim).
Git'i bu sertifikaya güvenecek şekilde yapılandırın
$ git config --global http.sslCAInfo /home/javl/git-certs/cert.pem
Bunun --system
yerine , bu sistemi geniş çapta yapmaya da çalışabilirsiniz --global
.
Ve test edin: Artık sunucunuzla aşağıdakilere başvurmadan iletişim kurabileceksiniz:
$ git config --global http.sslVerify false #NO NEED TO USE THIS
Git'inizi SSL sertifikalarının bilgisizliğine zaten ayarladıysanız, ayarını kaldırın:
$ git config --global --unset http.sslVerify
ayrıca, yazım hataları olmadan hepsini doğru bir şekilde yaptığınızı da kontrol edebilirsiniz:
$ git config --global --list
küresel olarak ayarladığınız tüm değişkenleri listeler. (Http'yi htt'ye yanlış yazdım).