web-dev-qa-db-fra.com

Pourquoi Schannel ne parvient pas à recevoir la poignée de main du serveur?

Lorsque j'essaie de tirer de notre serveur git, j'obtiens cette erreur:

fatal: impossible d'accéder à 'xxx': OpenSSL SSL_connect: SSL_ERROR_SYSCALL en connexion avec xxx

Lorsque cela s'est produit avant d'avoir pu le résoudre en restaurant simplement le système, mais cette fois, les points de restauration de mon système ont été supprimés pour une raison quelconque, et je ne peux pas le faire non plus.

Cela se produit donc parce que quelque chose dans mes paramètres système est lié aux modifications SSL et je ne sais pas pourquoi.

J'ai essayé d'installer git pour utiliser le certificat Windows. stocker au lieu d'OpenSSL et j'ai eu cette erreur:

fatal: impossible d'accéder à "xxx": canal: échec de la réception de la négociation, échec de la connexion SSL/TLS

Même problème, message d'erreur différent. Le serveur n'envoie pas de message de bienvenue après le message de bienvenue du client. J'ai pensé que cela pourrait se produire car aucune des suites de chiffrement que j'envoie au serveur dans le message bonjour du client n'est prise en charge par le serveur. J'ai donc essayé configuration d'une stratégie de groupe et mis en ordre la suite de chiffrement que le serveur utilise. Mais cela n'a fait aucune différence.

Je peux connecter le site du serveur git via le navigateur. Donc ma question est, que puis-je faire pour résoudre ce problème?

6
Selman Genç

Dans mon cas, j'ai changé le .gitconfig de

[http] sslbackend = schannel

à

[http] sslbackend = openssl
3
James

Vous devriez réessayer, pour les tests, avec le Git pour Windows version 2.14.2 (21 juin 2018) , qui ajoute du code pour forcer l'ignorance http.sslCAinfo lorsque le ssl backenis set toschannel` (pour que le magasin de certificats Windows ne soit pas ignoré).
Ceci n'est vraiment pertinent que lors de l'exécution avec cURL v7.60.0 (ou version ultérieure).

Voir commit c5ad43e :

http: lorsque vous utilisez Secure Channel, ignorez sslCAInfo par défaut

Depuis cURL v7.60.0, le backend Secure Channel peut utiliser le paquet de certificats fourni via http.sslCAInfo, mais cela remplacerait le magasin de certificats Windows. Comme cela n'est pas souhaitable par défaut, disons à Git de ne pas demander à cURL d'utiliser ce bundle par défaut lorsque le backend schannel a été configuré via http.sslBackend, sauf si useSSLCAInfo remplace ce comportement.

1
VonC

J'ai eu le même problème (Windows 10) et un redémarrage a résolu le problème.

0
TheLogicMan

Une solution "faible" consiste à définir GIT_SSL_NO_VERIFY:

export GIT_SSL_NO_VERIFY=true

Ou sous Windows, définissez la variable d'environnement, soit dans le système, soit sur la ligne de commande si vous utilisez une version en ligne de commande de Git:

set GIT_SSL_NO_VERIFY=true

Il fera simplement ce qu'il dit ...

0
Fabien Bouleau