Коротко:
- Отримайте сертифікат самопідписання
- Помістіть його в якийсь (наприклад
~/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 до https).