Comment installer des certificats pour la ligne de commande

32

À l’école, nous devons donc 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'obtiens:

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 le supprimer? L'importation doit pouvoir s'authentifier pour moi. En outre, il s'agit d'un fichier .cer , de sorte que la réponse à .crt ne fonctionnera pas. En outre, je ne veux pas d’étapes sur la façon de configurer git, comme je l’ai déjà fait. Je veux savoir si c'est possible. Ou est-ce que je peux simplement désactiver l'authentification avec la commande git et lui faire ignorer les certificats tels que la réponse ici indique? Aussi, je ne veux pas que la page Web se charge, j'ai paramétré firefox pour le faire. Je veux que la commande git push donne 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 son git config --global http.sslverify false . Mais je voudrais voir une réponse à tout, pas seulement un piratage informatique.

    
posée Universal Electricity 08.07.2015 - 10:16
la source

7 réponses

51

TL; DR

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

Dans Ubuntu:

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

Pourquoi

Permettez-moi d’expliquer ce qui se passe également, afin que les autres affiches comprennent pourquoi elles n’ont besoin d’aucun certificat pour utiliser Github sur HTTPS.

Ce qui se passe, c'est que votre école intercepte toutes les communications SSL, probablement pour les surveiller.

Pour ce faire, ce qu’ils font est essentiellement une attaque de type "homme au milieu" et, de ce fait, votre navigateur se plaint à juste titre de ne pas pouvoir vérifier le certificat de github. Votre mandataire scolaire prend le certificat de github et fournit son propre certificat.

Lorsque votre navigateur tente de vérifier que le certificat fourni par l’école contre l’autorité de certification qui a signé le certificat de github échoue à juste titre.

Donc, pour que la connexion SSL fonctionne dans l’école, vous devez accepter consciemment cette attaque "MITM". Et vous le faites en ajoutant le certificat de CA de l’école en tant que certificat de confiance.

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

Sachez que la connexion SSL n’est plus sûre car votre administrateur scolaire pourra intercepter toutes vos connexions chiffrées.

    
réponse donnée Telegrapher 17.07.2015 - 12:00
la source
32

Le package ca-certificates contient les instructions dans son README.Debian :

  

Si vous souhaitez installer implicitement des autorités de certification locales, placez les fichiers de certificat en tant que fichiers uniques se terminant par .crt dans /usr/local/share/ca-certificates/ et réexécutez    update-ca-certificates .

Notez qu’il 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 ensuite mettre à jour les autorisations du certificat et exécuter sudo update-ca-certificates comme indiqué dans la réponse Telegraphers. Vous verrez dans la sortie que le cert a été ajouté.

    
réponse donnée Robert Siemer 12.12.2016 - 16:47
la source
12

Les extensions .crt, .pem et .cer sont interchangeables, modifiez simplement 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
    
réponse donnée Mike 15.07.2015 - 11:21
la source
2

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

Il peut être modifié pour être à un trait.

Souvent, site.example.com et example.com sont les mêmes noms d'hôte.

    
réponse donnée Orient 24.11.2017 - 12:37
la source
1

J'avais un problème similaire: l'installation du certificat dans Firefox et Google Chrome fonctionnait, mais la mise à jour dans le terminal sudo apt-get update ne fonctionnait pas et donnait 403 erreurs IP interdites. J'avais aussi un fichier sample.cer. Donc, fondamentalement, je dois d'abord le convertir en .crt.

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

Toujours en faisant sudo dpkg-reconfigure ca-certificates , je n'ai pas pu trouver le certificat requis. Le problème avec moi est que je copiais le certificat au mauvais endroit.

Au lieu de le copier à $/usr/share/ca-certificates , je le copiais à $/usr/local/share/ca-certificates Mais en le plaçant au bon endroit, j'ai résolu mon problème. Mais je ne peux toujours pas mettre à jour les paquets ni installer de nouveaux paquets.

Solution rapide (pour moi sur):

Utilisation de ftp au lieu de http

sudo sed -i s/http/ftp/ /etc/apt/sources.list && apt-get update

et ci-dessus commande a fonctionné. Veuillez faire une copie du fichier sources.list avant d'effectuer les modifications.

Si quelque chose n'est pas clair ou pas correct, merci de me corriger.

    
réponse donnée Gopal Sharma 05.06.2018 - 15:11
la source
0

Pour accéder à un site Web avec https , que vous utilisiez un navigateur CLI ou une interface graphique, vous n'avez pas besoin de votre certificat shool.

Pour utiliser git via http (s), vous devez enregistrer votre clé publique dans les paramètres de votre profil sur GitHub .

Plus d’informations ici . Modifiez votre profil GitHub ici .

Essayez ceci:

sudo apt-get install w3m
w3m https://github.com/

... fonctionne sans certificat supplémentaire.

    
réponse donnée A.B. 15.07.2015 - 10:55
la source
0

J'ai lu toutes les solutions et résolu comme ça

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
    
réponse donnée Kadir Y. 31.07.2018 - 12:15
la source

Lire d'autres questions sur les étiquettes