TLDR:
hostname=XXX
port=443
trust_cert_file_location=`curl-config --ca`
sudo bash -c "echo -n | openssl s_client -showcerts -connect $hostname:$port -servername $hostname \
2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' \
>> $trust_cert_file_location"
Lange Antwort
Der Hauptgrund ist, dass Ihr Computer der Zertifizierungsstelle , die das auf dem Gitlab-Server verwendete Zertifikat signiert hat, nicht vertraut . Dies bedeutet nicht, dass das Zertifikat verdächtig ist, es kann jedoch selbstsigniert oder von einer Institution / Firma signiert sein, die nicht in der Liste der Zertifizierungsstellen Ihres Betriebssystems enthalten ist. Um das Problem auf Ihrem Computer zu umgehen , müssen Sie ihm sagen, dass er diesem Zertifikat vertrauen soll - wenn Sie keinen Grund haben, misstrauisch zu sein.
Sie müssen das für Ihren gitLab-Server verwendete Webzertifikat überprüfen und zu Ihrem hinzufügen </git_installation_folder>/bin/curl-ca-bundle.crt
.
Um zu überprüfen, ob mindestens der Klon funktioniert, ohne das Zertifikat zu überprüfen, können Sie Folgendes festlegen:
export GIT_SSL_NO_VERIFY=1
#or
git config --global http.sslverify false
Dies dient jedoch nur zum Testen, wie in " SSL funktioniert mit Browser, Wget und Curl, schlägt jedoch mit Git fehl " oder in diesem Blogbeitrag dargestellt .
Überprüfen Sie Ihre GitLab-Einstellungen, a in Ausgabe 4272 .
Geben Sie Folgendes ein, um das Zertifikat zu erhalten (das Sie Ihrer curl-ca-bundle.crt
Datei hinzufügen müssten ):
echo -n | openssl s_client -showcerts -connect yourserver.com:YourHttpsGitlabPort \
2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'
(wobei ' yourserver.com
' Ihr GitLab-Servername ist und YourHttpsGitlabPort
normalerweise der https-Port ist 443
)
Geben Sie Folgendes ein, um die Zertifizierungsstelle (Certificate Authority Issuer) zu überprüfen:
echo -n | openssl s_client -showcerts -connect yourserver.com:YourHttpsGilabPort \
2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' \
| openssl x509 -noout -text | grep "CA Issuers" | head -1
Hinweis: Valeriy Katkov schlägt in den Kommentaren vor-servername
, dem Befehl openssl eine Option hinzuzufügen , andernfalls wird dem Befehl in Valeriy's Fall kein Zertifikat für www.github.com angezeigt.
openssl s_client -showcerts -servername www.github.com -connect www.github.com:443
Findekano fügt in den Kommentaren hinzu :
Um den Standort von zu identifizieren curl-ca-bundle.crt
, können Sie den Befehl verwenden
curl-config --ca
Siehe auch meine neuere Antwort " github: Überprüfung des Serverzertifikats fehlgeschlagen ": Möglicherweise müssen Sie diese Zertifikate neu kristallisieren:
sudo apt-get install --reinstall ca-certificates
sudo mkdir /usr/local/share/ca-certificates/cacert.org
sudo wget -P /usr/local/share/ca-certificates/cacert.org http://www.cacert.org/certs/root.crt http://www.cacert.org/certs/class3.crt
sudo update-ca-certificates
git config --global http.sslCAinfo /etc/ssl/certs/ca-certificates.crt
curl-config --ca
zurückgegeben/etc/ssl/certs/ca-certificates.crt
, wo ich das Zertifikat hinzufügen musste. Abgesehen davon war diese Antwort die erste Information, die mich mit diesem Problem in die richtige Richtung wies