vérification du certificat du serveur a échoué. CAfile:/etc/ssl/certs / ca-certificats.crt CRLfile: néant
je peux push by clone project en utilisant ssh, mais ça ne marche pas quand je clone project avec https. il affiche l'erreur de message comme ci-dessous.
server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none
13 réponses
TLDR:
hostname=XXX
port=443
trust_cert_file_location=`curl-config --ca`
sudo bash -c "echo -n | openssl s_client -showcerts -connect $hostname:$port \
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 à 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 il n'est pas dans la liste des CAs de votre OS. Ce que vous devez faire pour contourner le problème sur votre ordinateur lui dit de faire confiance à ce certificat - si vous n'avez aucune raison d'être suspicieux à ce sujet.
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érification dudit certificat, vous peut définir:
export GIT_SSL_NO_VERIFY=1
#or
git config --global http.sslverify false
mais ce serait pour tester seulement, comme illustré dans " SSL fonctionne avec le navigateur, wget, et curl, mais échoue avec git ", ou dans ce post de blog .
Vérifiez vos paramètres GitLab, a dans numéro 4272 .
pour obtenir ce certificat (que vous devez ajouter à votre fichier curl-ca-bundle.crt
), Tapez a:
echo -n | openssl s_client -showcerts -connect yourserver.com:YourHttpGilabPort \
2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'
(avec yourserver.com
'étant votre nom de serveur GitLab)
pour vérifier L'AC (émetteur de L'Autorité de Certification), type a:
echo -n | openssl s_client -showcerts -connect yourserver.com:YourHttpGilabPort \
2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' \
| openssl x509 -noout -text | grep "CA Issuers" | head -1
Findekano ajoute dans les commentaires :
pour identifier l'emplacement de
curl-ca-bundle.crt
, vous pouvez utiliser la commande
curl-config --ca
aussi, voir ma réponse plus récente " GitHub: server certificate verification failed ": vous pourriez avoir à renistall 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
Note: Cela a grands les implications de sécurité.
ouvrez votre terminal et exécutez la commande suivante:
export GIT_SSL_NO_VERIFY=1
cela fonctionne pour moi et j'utilise le système Linux.
une Autre cause de ce problème pourrait être que votre horloge peut être désactivé. Les certificats sont sensibles au temps.
pour vérifier l'heure courante du système:
date -R
vous pourriez envisager d'installer NTP pour synchroniser automatiquement le temps système avec les serveurs de temps Internet de confiance de la global NTP pool . Par exemple, pour installer Debian / Ubuntu:
apt-get install ntp
avait le même problème. Causé par une autorité de certification auto-délivrée. Résolu par l'ajout d' .fichier pem /usr/local/share/ca-certificates/ et appelant
sudo update-ca-certificates
PS: fichier pem dans le dossier ./share / ca-les certificats doivent avoir une extension .crt
si vous utilisez un serveur git à l'intérieur d'un réseau privé et que vous utilisez un certificat auto-signé ou un certificat sur une adresse IP ; vous pouvez aussi simplement utiliser la configuration globale git pour désactiver les vérifications ssl:
git config --global http.sslverify "false"
Vérifiez votre horloge système,
$ date
si elle n'est pas correcte, la vérification du certificat échouera. Pour corriger l'horloge du système,
$ apt-get install ntp
l'horloge devrait se synchroniser.
enfin entrer à nouveau la commande clone.
GIT_CURL_VERBOSE=1 git [clone|fetch]…
devrait vous dire où est le problème. Dans mon cas, cela était dû au fait que cURL ne supportait pas les certificats PEM lorsqu'il était construit contre NSS, du fait que ce support n'était pas la ligne principale dans NSS.( #726116 #804215 #402712 et plus ).
ou simplement exécuter ce commentaire pour ajouter le certificat du serveur à votre base de données:
echo $(echo -n | openssl s_client -showcerts -connect yourserver.com:YourHttpGilabPort 2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p') >> /etc/ssl/certs/ca-certificates.crt
alors refais git clone.
j'ai foiré avec mes fichiers CA pendant que j'installais goagent proxy. Ne peut pas tirer des données de github, et obtenir le même avertissement:
échec de la vérification du certificat du serveur. CAfile:/etc/ssl/certs / ca-certificats.crt CRLfile: none
utilisez la méthode de Vonc, obtenez le certificat de github, et mettez-le dans /etc/ssl/certs/ca-certificats.crt, le problème est résolu.
echo-n / openssl s_client-showcerts-connect GitHub.com: 443 2 > / dev / null / sed-ne '/ - BEGIN CERTIFICATE -/, / - END CERTIFICATE - / p' 151910920"
il n'est pas nécessaire de définir la vérification git ssl pour définir false. Elle se produit lorsque le système ne possède pas tous les certificats d'autorité de L'AC. La plupart des gens qui ont un certificat SSL authentique manquent le certificat intermédiaire.
il suffit D'ajouter le texte complet du certificat intermédiaire (toute la chaîne des CA manquantes et du certificat intermédiaire) à
sudo gedit /etc/ssl/certs/ca-certificates.crt
fonctionne sans exécuter le update-ca-certificates
.
Il en va de même pour les certificats générés manuellement, il suffit d'ajouter le texte du certificat de L'AC.
À la fin : Appuyez succès: Tout est à jour
j'ai installé Xubuntu sur un Raspberry pi 2, j'ai trouvé le même problème avec le temps, puisque NTP et la synchronisation automatique du serveur étaient désactivées (ou non installées) . Obtenir NTP
sudo apt-get install ntp
et changer "L'heure et la Date" de "manuel" à" garder synchronisé avec les serveurs Internet "
éventuellement, ajouter le http.sslverify pour votre .git / config.
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = https://server/user/project.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
[http]
sslVerify = false
je viens de rencontré le même problème avec un dépôt git qui fonctionne toujours pour moi. Le problème était que je l'ai accédé par un accès WiFi public, qui redirige vers un portail captif sur la première connexion (par exemple pour afficher des annonces et d'accord avec tos).