Ответ 1
Коротко:
- получить самоподписанный сертификат
- поместите его в файл (например, ~/ git -certs/cert.pem)
- установить git, чтобы доверять этому сертификату с помощью параметра http.sslCAInfo.
Подробнее:
Получить самоподписанный сертификат удаленного сервера
Предполагая, что URL-адрес сервера repos.sample.com
и вы хотите получить к нему доступ через порт 443
.
Существует несколько вариантов, как их получить.
получить сертификат с помощью openssl
$ openssl s_client -connect repos.sample.com:443
Поймайте вывод в файл cert.pem
и удалите все, кроме части между (и включая) -BEGIN CERTIFICATE-
и -END CERTIFICATE-
Содержимое результирующего файла ~/ git -certs/cert.pem может выглядеть так:
-----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-----
получить сертификат с помощью веб-браузера
Я использую redmine с репозиториями git, и я обращаюсь к тому же URL-адресу для веб-интерфейса и для доступа к командной строке git. Таким образом, я должен был добавить исключение для этого домена в свой веб-браузер.
Используя Firefox, я отправился на Options -> Advanced -> Certificates -> View Certificates -> Servers
, нашел там самонастраиваемый хост, выбрал его и используя кнопку Export
, у меня есть точно такой же файл, который был создан с помощью openssl.
Примечание. Я был немного удивлен, нет никакого имени упомянутого авторитета. Это нормально.
Наличие доверенного сертификата в выделенном файле
Предыдущие шаги должны привести к наличию сертификата в каком-либо файле. Неважно, какой файл он до тех пор, пока он будет видимым для вашего git при доступе к этому домену. Я использовал ~/git-certs/cert.pem
Примечание. Если вам нужны более надежные самоподписанные сертификаты, поместите их в один файл:
-----BEGIN CERTIFICATE-----
MIIDnzCCAocCBE/xnXAwDQYJKoZIhvcNAQEFBQAwgZMxCzAJBgNVBAYTAkRFMRUw
...........
/27/jIdVQIKvHok2P/u9tvTUQA==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
AnOtHeRtRuStEdCeRtIfIcAtEgOeShErExxxxxxxxxxxxxxxxxxxxxxxxxxxxxxw
...........
/27/jIdVQIKvHok2P/u9tvTUQA==
-----END CERTIFICATE-----
Это будет работать (но я тестировал его только с одним сертификатом).
Настроить git, чтобы доверять этому сертификату
$ git config --global http.sslCAInfo /home/javl/git-certs/cert.pem
Вы также можете попытаться сделать эту систему в целом, используя --system
вместо --global
.
И протестируйте его: теперь вы сможете общаться с вашим сервером, не прибегая к:
$ git config --global http.sslVerify false #NO NEED TO USE THIS
Если вы уже установили свой git в незнание сертификатов ssl, отмените его:
$ git config --global --unset http.sslVerify
и вы также можете проверить, что вы сделали все правильно, без орфографических ошибок:
$ git config --global --list
что должно указывать все переменные, которые вы установили глобально. (Я неправильно использовал http для htt).