Impossible de communiquer en toute security avec un pair: pas d'algorithm de encryption commun

Je suis un user de Fedora 20. Pendant le clonage d'un repository, j'ai obtenu l'erreur suivante: "Clonage dans 'git_missions' … fatal: impossible d'accéder à ' https://openhatch.org/git-mission-data/git/hithard/ ': Impossible de communiquer en toute security avec pair: pas d'algorithm de encryption commun. "

Je ne comprends pas quoi faire, j'ai besoin d'aide.

Solutions Collecting From Web of "Impossible de communiquer en toute security avec un pair: pas d'algorithm de encryption commun"

La solution la plus simple consiste simplement à utiliser http au lieu de https :

 $ git clone http://openhatch.org/git-mission-data/git/hithard/ Cloning into 'hithard'... remote: Counting objects: 3, done. remote: Total 3 (delta 0), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. Checking connectivity... done. 

Je pense que l'erreur elle-même ("pas d'algorithms de chiffrement communs") est exacte; il semble que le server souhaite utiliser un type de chiffrement de courbe elliptique (TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256) qui n'est pas supporté par la bibliothèque SSL sous-jacente de git. Vous pouvez utiliser quelque chose comme wireshark pour capturer la prise de contact SSL entre git et le server et voir les options transmises.

Au less sur mon système, curl ne semble pas supporter ce chiffrement, et git utilise libcurl pour gérer les connections https / http.

Mettre à jour

Donc, sur la base de mon dernier commentaire sur @mattdm, dans lequel j'ai découvert que curl sur mon système utilise la bibliothèque de chiffrement NSS, les opérations suivantes:

 curl --ciphers ecdhe_ecdsa_aes_128_gcm_sha_256 https://openhatch.org/ 

Malheureusement, il n'y a aucun moyen de passer une list de chiffrement à git . Le patch pour le faire est sortingvial – voici une version que je viens de faire – mais je ne sais pas quelles sont les chances de l'get en amont.

Malheureusement, il n'y a aucun moyen de passer une list de chiffrement à git

larsks mentionnés dans les commentaires :

J'ai reçu un correctif accepté par git qui résout ce problème

Cela a été accepté et fusionné avec Git 2.5+ (Q2 2015)

Voir commettre f6f2a9e par Lars Kellogg-Stedman ( larsks ) , 08 mai 2015.
(Fusionné par Junio ​​C Hamano – gitster – dans le commit 39fa791 , 22 mai 2015)

http : append le support pour spécifier une list de chiffrement SSL

Enseignez git sur une nouvelle option, " http.sslCipherList ", qui permet de spécifier une list de chiffrements à utiliser lors de la négociation de connections SSL.
Le paramètre peut être remplacé par la variable d'environnement GIT_SSL_CIPHER_LIST .

La page de manuel git config comprend maintenant:

 http.sslCipherList: 

Une list de chiffrements SSL à utiliser lors de la négociation d'une connection SSL.
Les chiffrements disponibles dépendent du fait que libcurl a été compilé avec NSS ou OpenSSL et de la configuration particulière de la bibliothèque de chiffrement utilisée.
En interne, cela définit l'option 'CURLOPT_SSL_CIPHER_LIST'; Voir la documentation de libcurl pour plus de détails sur le format de cette list .

Peut être GIT_SSL_CIPHER_LIST par la variable d'environnement ' GIT_SSL_CIPHER_LIST '.
Pour forcer git à utiliser la list de chiffrement par défaut de libcurl et ignorer toute option http.sslCipherList explicite, définissez ' GIT_SSL_CIPHER_LIST ' sur la string vide.


Cela peut être utile en 2015:

  • " Maintenant que nous sums en 2015, quelles suites de chiffrement SSL / TLS devraient être utilisées dans un environnement HTTPS de haute security? "
  • " Renforcement des chiffrements SSL de votre server Web "
  • Problèmes de Nick Craver avec SSL / TLS et productivité , avec un problème de security maintenant fixé ( weakdh.org , le Logjam Attack exploitant les faiblesses dans le deployment de l'échange de keys Diffie-Hellman).

Mise à jour août 2015: Git 2.6+ (Q3 2015) permettra de spécifier explicitement la version SSL:

http : append un support pour spécifier la version SSL

Voir comm . 01861cb (14 août 2015) par Elia Pinto ( devzero2000 ) .
Aidé par: Eric Sunshine ( sunshineco ) .
(Fusionné par Junio ​​C Hamano – gitster – in commit ed070a4 , 26 août 2015)

 http.sslVersion 

La version SSL à utiliser lors de la négociation d'une connection SSL, si vous souhaitez forcer la valeur par défaut.
La version disponible et la version par défaut dépendent de la construction de libcurl par rapport à NSS ou OpenSSL et de la configuration particulière de la bibliothèque de chiffrement utilisée. En interne, cela définit l'option ' CURLOPT_SSL_VERSION '; Voir la documentation de libcurl pour plus de détails sur le format de cette option et pour la version ssl supscope.
En fait, les valeurs possibles de cette option sont:

  • sslv2
  • sslv3
  • tlsv1
  • tlsv1.0
  • tlsv1.1
  • tlsv1.2

Peut être GIT_SSL_VERSION par la variable d'environnement ' GIT_SSL_VERSION '.
Pour forcer git à utiliser la version ssl par défaut de libcurl et ignorer toute option http.sslversion explicite, définissez 'GIT_SSL_VERSION' sur la string vide.