web-dev-qa-db-fra.com

Comment installer des certificats pour la ligne de commande

Donc, à 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 je reçois:

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'import doit pouvoir s'authentifier pour moi. En outre, il s’agit d’un fichier .cer; la réponse pour .crt ne fonctionnera donc 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 s'il est possible de le faire. Ou puis-je simplement désactiver l'authentification avec la commande git totalement et lui faire ignorer les certificats comme quoi la réponse ici dit? De plus, je ne veux pas que la page Web se charge, j'ai configuré 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

Remarque: j'ai découvert son git config --global http.sslverify false. Mais je voudrais voir une réponse à tout, pas seulement un git hack

58

TL; DR

Pour que tout fonctionne, et pas seulement votre navigateur, vous devez ajouter ce certificat de CA au référentiel de CA approuvé du système.

À Ubuntu:

  • Allez à/usr/local/share/ca-certificates /
  • Créer un nouveau dossier, par exemple "École Sudo mkdir"
  • 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

Laissez-moi vous expliquer ce qui se passe également, afin que les autres afficheurs comprennent pourquoi ils n’ont pas besoin de certificat pour utiliser Github sur HTTPS.

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

Pour faire cela, ce qu'ils font est essentiellement une attaque "homme au milieu", et à cause de cela, votre navigateur se plaint à juste titre qu'il n'est pas en mesure de vérifier le certificat de github. Votre proxy d'école prend 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'AC ayant signé le certificat de github, il é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 l'autorité de certification de l'école.

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

Sachez que la connexion SSL n'est plus sûre, car votre administrateur d'école sera capable d'intercepter toutes vos connexions cryptées.

90
Telegrapher

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

Si vous souhaitez installer des autorités de certification locales pour une sécurité implicite, veuillez placer les fichiers de certificat sous forme de 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 mettre à jour les autorisations du certificat et exécuter Sudo update-ca-certificates comme indiqué dans la réponse de Telegraphers. Vous verrez dans la sortie que le certificat a été ajouté.

38
Robert Siemer

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

$ 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
13
Mike

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 one-liner.

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

4
Orient

J'avais un problème similaire où 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 des erreurs 403 Forbidden IP. 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 trouvé le certificat requis. Le problème avec moi, c'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 a résolu mon problème. Mais je ne suis toujours pas en mesure de mettre à jour les packages ou d'installer de nouveaux packages.

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 au-dessus de la commande a travaillé. Faites une copie du fichier sources.list avant d’apporter les modifications.

Si quelque chose n'est pas clair ou incorrect, corrigez-moi.

1
Gopal Sharma

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'infos ici . Changez votre profil GitHub ici .


Essaye ça:

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

… Fonctionne sans certificat supplémentaire.

0
A.B.

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
0
Kadir Y.