Конфігурація сертифікату самопідписання Git
тл; д-р
НІКОЛИ не вимикайте всю перевірку SSL!
Це створює погану культуру безпеки. Не будь такою людиною.
Ключі конфігурації, за якими ви хочете:
Вони призначені для налаштування хост-сертифікатів, яким ви довіряєте
Вони призначені для налаштування ВАШОГО сертифіката для відповіді на проблеми SSL.
Вибірково застосуйте наведені вище налаштування до конкретних хостів.
Глобальний .gitconfig
для авторизованих сертифікаційних органів
Заради мене та моїх колег, ось як нам вдалося змусити самопідписані сертифікати працювати без відключення sslVerify
. Відредагуйте свій,.gitconfig
використовуючи git config --global -e
додайте ці:
# Specify the scheme and host as a 'context' that only these settings apply
# Must use Git v1.8.5+ for these contexts to work
[credential "https://your.domain.com"]
username = user.name
# Uncomment the credential helper that applies to your platform
# Windows
# helper = manager
# OSX
# helper = osxkeychain
# Linux (in-memory credential helper)
# helper = cache
# Linux (permanent storage credential helper)
# https://askubuntu.com/a/776335/491772
# Specify the scheme and host as a 'context' that only these settings apply
# Must use Git v1.8.5+ for these contexts to work
[http "https://your.domain.com"]
##################################
# Self Signed Server Certificate #
##################################
# MUST be PEM format
# Some situations require both the CAPath AND CAInfo
sslCAInfo = /path/to/selfCA/self-signed-certificate.crt
sslCAPath = /path/to/selfCA/
sslVerify = true
###########################################
# Private Key and Certificate information #
###########################################
# Must be PEM format and include BEGIN CERTIFICATE / END CERTIFICATE,
# not just the BEGIN PRIVATE KEY / END PRIVATE KEY for Git to recognise it.
sslCert = /path/to/privatekey/myprivatecert.pem
# Even if your PEM file is password protected, set this to false.
# Setting this to true always asks for a password even if you don't have one.
# When you do have a password, even with this set to false it will prompt anyhow.
sslCertPasswordProtected = 0
Список літератури:
Вкажіть конфігурацію при git clone
-ing
Якщо вам потрібно застосувати його за принципом репо, документація пропонує вам просто запуститись git config --local
у каталог репо. Ну, це не корисно, коли у вас ще не було клопотано репо на локальному рівні, чи не так?
Ви можете зробити global -> local
хоккей, встановивши глобальну конфігурацію, як описано вище, а потім скопіюйте ці налаштування у локальну конфігурацію репо, як тільки вона клонується ...
АБО що ви можете зробити - це вказати команди конфігурації,git clone
які застосовуються до цільового репо, після його клонування.
# Declare variables to make clone command less verbose
OUR_CA_PATH=/path/to/selfCA/
OUR_CA_FILE=$OUR_CA_PATH/self-signed-certificate.crt
MY_PEM_FILE=/path/to/privatekey/myprivatecert.pem
SELF_SIGN_CONFIG="-c http.sslCAPath=$OUR_CA_PATH -c http.sslCAInfo=$OUR_CA_FILE -c http.sslVerify=1 -c http.sslCert=$MY_PEM_FILE -c http.sslCertPasswordProtected=0"
# With this environment variable defined it makes subsequent clones easier if you need to pull down multiple repos.
git clone $SELF_SIGN_CONFIG https://mygit.server.com/projects/myproject.git myproject/
Один лайнер
EDIT: Див VonC «s відповідь , що точки з застереження про абсолютних і відносних шляхах для конкретних версій GIT з 2.14.x / 2.15 до цього один лайнера
git clone -c http.sslCAPath="/path/to/selfCA" -c http.sslCAInfo="/path/to/selfCA/self-signed-certificate.crt" -c http.sslVerify=1 -c http.sslCert="/path/to/privatekey/myprivatecert.pem" -c http.sslCertPasswordProtected=0 https://mygit.server.com/projects/myproject.git myproject/
CentOS unable to load client key
Якщо ви намагаєтеся це зробити на CentOS, і ваш .pem
файл надає вам
unable to load client key: "-8178 (SEC_ERROR_BAD_KEY)"
Тоді вам буде потрібна відповідь StackOverflow про те, як curl
використовується NSS замість Open SSL.
І вам хочеться відновити curl
з джерела :
git clone http://github.com/curl/curl.git curl/
cd curl/
# Need these for ./buildconf
yum install autoconf automake libtool m4 nroff perl -y
#Need these for ./configure
yum install openssl-devel openldap-devel libssh2-devel -y
./buildconf
su # Switch to super user to install into /usr/bin/curl
./configure --with-openssl --with-ldap --with-libssh2 --prefix=/usr/
make
make install
перезавантажте комп'ютер, оскільки libcurl все ще зберігається в пам'яті як спільна бібліотека
Пітон, піп і конда
Пов'язане : Як додати спеціальний сертифікат Root CA до магазину CA, який використовується pip в Windows?