145 votes

Comment installer des certificats pour la ligne de commande

Ainsi, à l'école, nous devons installer un certificat pour accéder aux sites https. Dans firefox, je peux importer le certificat. Cependant, je ne peux pas le faire avec la ligne de commande. Par exemple, en exécutant git push J'ai compris :

fatal: unable to access 'https://github.com/user/repo': server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none

Comment importer un certificat pour supprimer ce problème ? L'importation doit pouvoir s'authentifier pour moi. De plus, c'est un .cer donc la réponse pour .crt ne fonctionnera pas. De plus, je ne veux pas d'instructions sur la façon de configurer git, car je l'ai déjà fait. Je veux savoir s'il est possible de le faire. Ou puis-je simplement désactiver l'authentification avec l'option git et l'obliger à ignorer les certificats comme ce que la réponse ici dit ? De plus, je ne veux pas que la page web se charge, j'ai configuré firefox pour qu'il le fasse. Je veux que la page git push pour donner la sortie standard comme :

[master 630d087] message
 1 file changed, 93 insertions(+), 80 deletions(-)
 rewrite somefile (84%)
Counting objects: 9, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (5/5), 978 bytes | 0 bytes/s, done.
Total 5 (delta 2), reused 0 (delta 0)
To https://github.com/User/Repo.git
   851ae39..630d087  master -> master

Note : J'ai découvert que son git config --global http.sslverify false . Mais j'aimerais voir une réponse pour tout, pas seulement un hack git.

230voto

Telegrapher Points 2648

TL;DR

Pour que tout fonctionne, et pas seulement votre navigateur, vous devez ajouter ce certificat d'autorité de certification au référentiel d'autorité de certification de confiance du système.

Dans ubuntu :

  • Allez dans /usr/local/share/ca-certificates/
  • Créez un nouveau dossier, c'est-à-dire "sudo mkdir school".
  • Copiez le fichier .crt dans le dossier de l'école.
  • Vérifiez que les autorisations sont correctes (755 pour le dossier, 644 pour le fichier).
  • Exécuter "sudo update-ca-certificates"

Pourquoi

Je vais également expliquer ce qui se passe, afin que les autres posteurs comprennent pourquoi ils n'ont pas besoin de certificat pour utiliser Github en HTTPS.

Ce qui se passe ici, c'est que votre école intercepte toutes les communications SSL, probablement dans le but de les surveiller.

Pour ce faire, ce qu'ils font est essentiellement une attaque de type "man in the middle", et à cause de cela, votre navigateur se plaint à juste titre qu'il n'est pas en mesure de vérifier le certificat de github. Le proxy de votre école supprime le certificat de Github et fournit son propre certificat.

Lorsque votre navigateur essaie de vérifier le certificat fourni par l'école par rapport à l'autorité de certification qui a signé le certificat de github, il échoue à juste titre.

Ainsi, pour que la connexion SSL fonctionne à l'école, vous devez accepter consciemment cette attaque "MITM". Et vous le faites en ajoutant le certificat CA de l'école comme certificat de confiance.

Si vous faites confiance à l'autorité de certification de l'école, votre vérification du faux certificat de github fonctionnera, puisque le faux certificat de github sera vérifié par l'autorité de certification de l'école.

Sachez que la connexion SSL n'est plus sûre car l'administrateur de votre école pourra intercepter toutes vos connexions cryptées.

56voto

taudep Points 101

El ca-certificates a les instructions dans son README.Debian :

Si vous souhaitez installer des autorités de certification locales pour qu'elles soient implicitement fiables, veuillez placer les fichiers de certificat sous forme de fichiers uniques se terminant par .crt sur /usr/local/share/ca-certificates/ et relancer update-ca-certificates .

Notez qu'elle mentionne un répertoire différent des autres réponses ici :

/usr/local/share/ca-certificates/

Après avoir copié dans /usr/local/share/ca-certificates/ vous pouvez alors mettre à jour les permissions du certificat et exécuter sudo update-ca-certificates comme mentionné dans la réponse du télégraphiste. Vous verrez dans la sortie que le certificat a été ajouté.

31voto

Mike Points 5131

Les extensions .crt, .pem et .cer sont interchangeables, il suffit de changer l'extension du nom de fichier, elles ont la même forme. Essayez ceci :

$ sudo cp mycert.cer /usr/share/ca-certificates/mycert.pem
$ sudo dpkg-reconfigure ca-certificates
$ sudo update-ca-certificates
$ git config --global http.sslCAInfo /usr/share/ca-certificates/mycert.pem

17voto

Kadir Y. Points 366

J'ai lu toutes les solutions et j'ai résolu comme ceci ;

sudo openssl x509 -inform DER -in certificate.cer -out certificate.crt

sudo mv certificate.crt /usr/share/ca-certificate/

cd /usr/share/ca-certificate

sudo chmod 644 certificate.crt

sudo dpkg-reconfigure ca-certificates

sudo update-ca-certificates

12voto

Tomilov Anatoliy Points 609

J'utilise la compilation suivante des réponses précédentes :

sudo -i
echo | openssl s_client -showcerts -servername site.example.com -connect example.com:443 2>/dev/null | awk '/-----BEGIN CERTIFICATE-----/, /-----END CERTIFICATE-----/' >> /usr/local/share/ca-certificates/ca-certificates.crt 
update-ca-certificates

Souvent, les deux site.example.com y example.com sont les mêmes noms d'hôtes.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X