Konfiguration des selbstsignierten Git-Zertifikats
tl; dr
Deaktivieren Sie NIEMALS alle SSL-Überprüfungen!
Dies schafft eine schlechte Sicherheitskultur. Sei nicht diese Person.
Die Konfigurationsschlüssel, nach denen Sie suchen, sind:
Diese dienen zum Konfigurieren von Host-Zertifikaten, denen Sie vertrauen
Diese dienen zum Konfigurieren IHRES Zertifikats, um auf SSL-Herausforderungen zu reagieren.
Wenden Sie die obigen Einstellungen selektiv auf bestimmte Hosts an.
Global .gitconfig
für selbstsignierte Zertifizierungsstellen
Für mich und meine Kollegen ist es hier gelungen, selbstsignierte Zertifikate ohne Deaktivierung zum Laufen zu bringen sslVerify
. Bearbeiten Sie Ihre.gitconfig
mit: git config --global -e
Fügen Sie diese hinzu:
# 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
Verweise:
Geben Sie beim git clone
-ing die Konfiguration an
Wenn Sie es pro Repo anwenden müssen, werden Sie in der Dokumentation aufgefordert, es einfach git config --local
in Ihrem Repo-Verzeichnis auszuführen . Nun, das ist nicht nützlich, wenn Sie das Repo noch nicht lokal geklont haben, oder?
Sie können das global -> local
hokey-pokey ausführen, indem Sie Ihre globale Konfiguration wie oben festlegen und diese Einstellungen dann in Ihre lokale Repo-Konfiguration kopieren, sobald sie geklont ist ...
ODER Sie können Konfigurationsbefehle angebengit clone
, die nach dem Klonen auf das Ziel-Repo angewendet werden.
# 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/
Einzeiler
EDIT: Siehe VonC ‚s Antwort , dass die Punkte aus einem Vorbehalt über absolute und relative Pfade für bestimmte git Versionen von 2.14.x / 2.15 auf diese Einzeiler
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
Wenn Sie dies unter CentOS versuchen und Ihre .pem
Datei Ihnen gibt
unable to load client key: "-8178 (SEC_ERROR_BAD_KEY)"
Dann möchten Sie diese StackOverflow-Antwort darüber, wie curl
NSS anstelle von Open SSL verwendet wird.
Und Sie möchten aus der Quelle neu curl
erstellen :
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
Starten Sie den Computer neu, da sich libcurl noch als gemeinsam genutzte Bibliothek im Speicher befindet
Python, Pip und Conda
Verwandte Themen : Wie füge ich dem von pip in Windows verwendeten CA Store ein benutzerdefiniertes CA-Stammzertifikat hinzu?