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
216
demandé sur VonC 2014-01-17 12:34:42

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
286
répondu VonC 2017-09-21 06:39:28

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.

140
répondu Afzal Masood 2017-03-07 17:50:52

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
107
répondu davidthings 2017-01-06 01:49:20

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

38
répondu Nikolay Ruban 2014-06-30 14:23:36

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"
32
répondu Romain VDK 2017-10-09 12:33:58

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.

24
répondu mycowan 2017-09-20 11:53:03
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 ).

20
répondu Tobu 2014-04-15 15:12:08

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.

11
répondu phiphu 2016-08-30 10:51:34

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"

8
répondu IFQ 2015-02-07 17:23:55

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

7
répondu abcdef12 2015-06-06 07:19:53

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 "

2
répondu user273711 2015-03-24 19:03:52

é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
1
répondu Mickael L 2016-03-14 16:12:46

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).

0
répondu Tosha 2014-07-26 16:50:55