Configuration de certificat auto-signé Git
tl; dr
Ne désactivez JAMAIS toutes les vérifications SSL!
Cela crée une mauvaise culture de sécurité. Ne soyez pas cette personne.
Les clés de configuration que vous recherchez sont les suivantes:
Ce sont pour la configuration des certificats hôtes auxquels vous faites confiance
Ce sont pour configurer VOTRE certificat pour répondre aux défis SSL.
Appliquez sélectivement les paramètres ci-dessus à des hôtes spécifiques.
Global .gitconfig
pour les autorités de certification auto-signées
Pour moi et mes collègues, voici comment nous avons réussi à faire fonctionner les certificats auto-signés sans les désactiver sslVerify
. Modifiez votre.gitconfig
à l'aide de git config --global -e
ces ajouter:
# 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
Références:
Spécifiez la configuration lorsque git clone
-ing
Si vous devez l'appliquer sur une base par dépôt, la documentation vous indique de simplement exécuter git config --local
dans votre répertoire de dépôt. Eh bien, ce n'est pas utile lorsque vous n'avez pas cloné le référentiel localement, n'est-ce pas?
Vous pouvez faire le global -> local
hokey-pokey en définissant votre configuration globale comme ci-dessus, puis copiez ces paramètres dans votre configuration de dépôt locale une fois qu'elle est clonée ...
OU ce que vous pouvez faire est de spécifier des commandes de configuration àgit clone
appliquer au référentiel cible une fois qu'il est cloné.
# 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/
Bon mot
EDIT: Voir la réponse de VonC qui souligne une mise en garde sur les chemins absolus et relatifs pour les versions spécifiques de git de 2.14.x / 2.15 à cette ligne
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
Si vous essayez ceci sur CentOS et que votre .pem
fichier vous donne
unable to load client key: "-8178 (SEC_ERROR_BAD_KEY)"
Ensuite, vous voudrez cette réponse StackOverflow sur la façon dont curl
NSS au lieu d'Open SSL.
Et vous aimerez vouloir reconstruire à curl
partir de la source :
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
redémarrer l'ordinateur car libcurl est toujours en mémoire en tant que bibliothèque partagée
Python, pip et conda
Connexe : Comment ajouter un certificat racine CA personnalisé au CA Store utilisé par pip dans Windows?