Konfigurasi Sertifikat Git yang Ditandatangani Sendiri
tl; dr
JANGAN PERNAH menonaktifkan semua verifikasi SSL!
Ini menciptakan budaya keamanan yang buruk. Jangan menjadi orang itu.
Kunci konfigurasi yang Anda cari adalah:
Ini untuk mengonfigurasi sertifikat host yang Anda percayai
Ini untuk mengonfigurasi sertifikat ANDA untuk merespons tantangan SSL.
Secara selektif menerapkan pengaturan di atas untuk host tertentu.
Global .gitconfig
untuk Otoritas Sertifikat yang Ditandatangani Sendiri
Demi saya sendiri dan rekan-rekan saya di sini adalah bagaimana kami berhasil mendapatkan sertifikat yang ditandatangani sendiri untuk bekerja tanpa menonaktifkan sslVerify
. Edit Anda.gitconfig
untuk menggunakan git config --global -e
tambahkan ini:
# 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
Referensi:
Tentukan konfigurasi saat git clone
-ing
Jika Anda perlu menerapkannya pada basis per repo, dokumentasi memberitahu Anda untuk hanya berjalan git config --local
di direktori repo Anda. Nah itu tidak berguna ketika Anda belum mendapatkan repo yang dikloning secara lokal, tetapi sekarang bukan?
Anda dapat melakukan global -> local
tipu-muslihat dengan mengatur konfigurasi global Anda seperti di atas dan kemudian menyalin pengaturan tersebut ke konfigurasi repo lokal Anda setelah diklon ...
ATAU apa yang dapat Anda lakukan adalah menentukan perintah konfigurasigit clone
yang diterapkan pada repo target setelah dikloning.
# 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/
Satu Liner
EDIT: Lihat VonC 's jawaban bahwa titik-titik keluar peringatan tentang path absolut dan relatif untuk versi git dari 2.14.x / 2,15 untuk satu kapal ini
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
Jika Anda mencoba ini pada CentOS dan .pem
file Anda memberi Anda
unable to load client key: "-8178 (SEC_ERROR_BAD_KEY)"
Maka Anda akan menginginkan jawaban StackOverflow ini tentang cara curl
menggunakan NSS alih-alih Open SSL.
Dan Anda ingin membangun kembali curl
dari sumber :
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
restart komputer karena libcurl masih dalam memori sebagai perpustakaan bersama
Python, pip, dan conda
Terkait : Bagaimana cara menambahkan sertifikat CA Root kustom ke CA Store yang digunakan oleh pip di Windows?