Configurazione del certificato autofirmato Git
tl; dr
Non disabilitare MAI tutta la verifica SSL!
Questo crea una cattiva cultura della sicurezza. Non essere quella persona.
Le chiavi di configurazione che stai cercando sono:
Questi sono per la configurazione dei certificati host di cui ti fidi
Questi sono per la configurazione del TUO certificato per rispondere alle sfide SSL.
Applicare selettivamente le impostazioni sopra indicate a host specifici.
Globale .gitconfig
per le autorità di certificazione autofirmate
Per il bene mio e dei miei colleghi, ecco come siamo riusciti a far funzionare i certificati autofirmati senza disabilitarli sslVerify
. Modifica il tuo.gitconfig
usando git config --global -e
aggiungi questi:
# 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
Riferimenti:
Specifica la configurazione quando git clone
-ing
Se è necessario applicarlo in base al repository, la documentazione indica di eseguire semplicemente git config --local
nella directory del repository. Beh, non è utile quando non hai clonato il repository a livello locale, ma adesso lo è?
È possibile eseguire il global -> local
comando hokey-pokey impostando la configurazione globale come sopra e quindi copiare tali impostazioni nella configurazione del repository locale una volta clonate ...
O quello che puoi fare è specificare i comandi di configurazionegit clone
che verranno applicati al repository di destinazione una volta clonato.
# 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/
Una fodera
EDIT: vedi la risposta di VonC che indica un avvertimento sui percorsi assoluti e relativi per specifiche versioni git da 2.14.x / 2.15 a questa riga
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
Se lo stai provando su CentOS e il tuo .pem
file ti sta dando
unable to load client key: "-8178 (SEC_ERROR_BAD_KEY)"
Quindi vorrai questa risposta StackOverflow su come curl
utilizza NSS anziché Open SSL.
E ti piacerebbe ricostruire curl
dalla fonte :
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
riavvia il computer poiché libcurl è ancora in memoria come libreria condivisa
Python, pip e conda
Correlati : Come aggiungere un certificato radice CA personalizzato all'archivio CA utilizzato dal pip in Windows?