ajout d'un certificat SSL pour Github uniquement (pas tous les certificats du package ca-certificats)

13

J'obtiens l'erreur suivante lors de l'accès à Github via HTTPS:

error: server certificate verification failed. 
CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none

C'est parce que je n'ai pas de certificats /etc/ssl/certs/. Je sais comment résoudre ce problème. Je peux installer le paquet ca-certificatesdepuis le référentiel Debian. Le problème est, cependant, que cela installera tous les certificats (des milliers) que je ne veux pas nécessairement accepter / faire confiance.

Comment puis-je installer un certificat pour Github uniquement?

un sous-problème / sous-question

Sur une autre machine, où le paquet ca-certificatesest déjà installé et git fonctionne, j'ai remarqué que certains certificats /etc/ssl/certs/sont un certificat par fichier et d'autres sont plusieurs certificats en un fichier. Le fichier contenant le certificat Github /etc/ssl/certs/ca-certificates.crtcontient plus de 150 autres certificats:

$ grep 'BEGIN CERTIFICATE' /etc/ssl/certs/ca-certificates.crt | wc -l
159

Comment puis-je trouver lequel de ces 159 certificats est celui dont j'ai besoin? (autre que la force brute - découpage du fichier en deux et vérification des deux moitiés, répétition while n > 1).

Martin Vegter
la source
Qu'est-ce que vous essayez d'accomplir? Contacter GitHub par programme?
Nate W.
Avez-vous essayé de télécharger le package source, puis d'extraire uniquement le certificat souhaité?
jayhendren
Qu'utilisez-vous pour accéder à github? un outil en ligne de commande? un navigateur?
lk-

Réponses:

13

Pour accéder à votre Github, vous devez le faire via ssh. Vous devez donc ajouter votre clé publique ssh à github. Après cela, vous pouvez accéder à github via ssh, c'est-à-dire:

git init [email protected]:yourname/yourrepo.git

Voir aussi: Github: génération de clés ssh , WikiHow

[Modifier # 1]

sans vérification de certificat:

GIT_SSL_NO_VERIFY=true git clone https://github.com/p/repo.git

ou authentifié

GIT_SSL_NO_VERIFY=true git clone https://user@pass:github.com/p/repo.git

Pour moi, ce que vous demandez n'est toujours pas clair, car vous savez que l'installation de certificats CA résoudra le problème.

[Modifier # 2]

Ok, l'autre question était

comment avoir uniquement le certificat nécessaire pour accéder à github.com via https

  1. Ouvrez votre navigateur et accédez à https://github.com/ . Cliquez sur le nom vert à gauche de https://et cliquez sur Certificates. Sur l' Detailsonglet, vous verrez la chaîne de certificats, qui est:

    DigiCert ...
      DigiCert ...
       github.com ...
    
  2. Exportez chacun des certificats DigiCert dans un fichier.

  3. copier les fichiers dans /etc/ssl/certs/
  4. exécuter c_rehashquel chat tous les certificatsca-certificates.crt
  5. vous avez terminé.

Comme je l'ai dit, je ne suis pas un ami de telles actions car github peut changer l'autorité de certification à tout moment, donc cela entraînera toujours un travail supplémentaire.


la source
1
Merci pour la suggestion. Mais je voudrais accéder githubvia https.
Martin Vegter
1

Comme cela a été suggéré précédemment, vous pouvez utiliser des clés SSH, au lieu de compter sur HTTPS pour éviter ce problème et, sans doute, bénéficier d'une meilleure sécurité.

Cela dit, je pense que ce que vous cherchez, c'est comment installer les certificats racine / CA dans / etc / ssl / certs. En bref, il ne suffit pas de simplement vider le fichier encodé PEM dans / etc / ssl / certs - vous devez également calculer le hachage dudit certificat et créer un lien symbolique dans / etc / ssl / certs vers ce certificat fichier. Le nom du lien symbolique doit être le hachage suffixé de .0, ou en cas de collision de hachage, .1, etc.

Voici une description détaillée, ainsi qu'un exemple de script que vous pouvez utiliser pour automatiser le processus: http://wiki.openwrt.org/doc/howto/wget-ssl-certs#adding.root.certificates

J'espère que c'est ce que vous cherchiez, mais comme je l'ai dit plus tôt, les clés SSH sont probablement la "meilleure" solution. :)

Rouben Tchakhmakhtchian
la source
c_rehashfait ce que vous avez expliqué. Voir la c_rehashpage de manuel. BTW: il n'est pas nécessaire de calculer les hachages. Attacher les certificats à ca-certificats.crt est suffisant, car gitlit uniquement ce fichier. De plus, le lien a expliqué comment obtenir manuellement les certificats avec openssl. Ceci est très douteux et provoque un homme au milieu de l'attaque. Je ne le recommanderais pas.