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"
Longue réponse
La raison principale est que votre ordinateur ne fait pas confiance à l' autorité de certification qui a signé le certificat utilisé sur le serveur Gitlab . Cela ne signifie pas que le certificat est suspect, mais il peut être auto-signé ou signé par une institution / entreprise qui ne figure pas dans la liste des autorités de certification de votre système d'exploitation. Ce que vous devez faire pour contourner le problème sur votre ordinateur c'est lui dire de faire confiance à ce certificat - si vous n'avez aucune raison de vous en méfier.
Vous devez vérifier le certificat Web utilisé pour votre serveur gitLab et l'ajouter à votre </git_installation_folder>/bin/curl-ca-bundle.crt
.
Pour vérifier si au moins le clone fonctionne sans vérifier ledit certificat, vous pouvez définir:
export GIT_SSL_NO_VERIFY=1
#or
git config --global http.sslverify false
Mais ce ne serait que pour les tests, comme illustré dans « SSL fonctionne avec le navigateur, wget et curl, mais échoue avec git », ou dans cet article de blog .
Vérifiez vos paramètres GitLab, un problème 4272 .
Pour obtenir ce certificat (que vous devrez ajouter à votre curl-ca-bundle.crt
fichier), tapez a:
echo -n | openssl s_client -showcerts -connect yourserver.com:YourHttpsGitlabPort \
2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'
(' yourserver.com
' étant le nom de votre serveur GitLab, et il YourHttpsGitlabPort
s'agit généralement du port https 443
)
Pour vérifier l'autorité de certification (émetteur de l'autorité de certification), tapez a:
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
Remarque: Valeriy Katkov suggère dans les commentaires d'ajouter une -servername
option à la commande openssl, sinon la commande ne montre pas de certificat pour www.github.com dans le cas de Valeriy.
openssl s_client -showcerts -servername www.github.com -connect www.github.com:443
Findekano ajoute dans les commentaires :
pour identifier l'emplacement curl-ca-bundle.crt
, vous pouvez utiliser la commande
curl-config --ca
Consultez également ma réponse la plus récente " github: la vérification du certificat du serveur a échoué ": vous devrez peut-être renommer ces certificats:
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
retourné/etc/ssl/certs/ca-certificates.crt
, c'est là que j'ai dû ajouter le certificat. En dehors de cela, cette réponse a été la première information me pointant dans la bonne direction avec ce problème