OpenSSL errno 10054,连接被拒绝,同时尝试连接到我们的服务器

Fea*_*aro 6 git iis https openssl

我们正在通过https运行git服务器并且连接没有任何问题,因为我们都使用visual studio这样做.现在有人想使用标准的git bash,它无法连接以下错误输出.

fatal: unable to access 'https://server/Repo.git/': Unknown SSL protocol error in connection to server:443
Run Code Online (Sandbox Code Playgroud)

我尝试了一些不同的密码套件,没有任何效果.然后它告诉我,git可能还不支持ECDSA证书.所以我用RSA交换了ECDSA证书.这也行不通.

然后我尝试使用以下命令连接OpenSSL s_client:

OpenSSL> s_client -connect server:443
Run Code Online (Sandbox Code Playgroud)

这是运行命令的输出:

CONNECTED(0000018C)
write:errno=10054
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 307 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
---
Run Code Online (Sandbox Code Playgroud)

我搜索谷歌的错误号码10054,发现它意味着连接被拒绝.我们使用IIS 8.5为git服务器提供https端点.我可以通过所有webbrowsers连接到Web环境,我们可以通过visual studio git界面使用git服务器.所以我认为这不是防火墙问题.我想知道以前是否有人遇到过这个问题,是否可以帮助我们在这里?

Ste*_*ich 12

10054没有连接被拒绝,但连接被同行重置.这意味着,TCP连接已成功建立(s_client表示已连接),但是当从客户端向服务器发送更多数据时,服务器关闭连接而不读取所有数据(并发回TCP RST).

虽然这可能是防火墙问题,但它也可能表明服务器配置存在问题,即服务器接受客户端但由于配置无效而无法继续.此类无效配置可能是缺少所请求数据的权限,没有可用私钥的证书或其他.我建议您查看服务器日志以获取更多信息.

我还看到了TCP RST与服务器,负载平衡器或防火墙,它们不了解当前的TLS版本,只是关闭连接.浏览器通过使用较低的TLS版本透明地重试来解决此问题.您可以尝试openssl s_client -ssl3对这个服务器起作用并且您收到证书.


Fea*_*aro 10

确认您使用的是TLS 1.0或更高版本.有些服务器需要TLS 1.2.如果您不确定您的服务器是否支持TLS 1.2,请查看上面的Steffen Ulrich的答案并首先尝试.

如果这没有帮助,那么检查端点是否需要SNI.如果是这种情况,这可能是问题所在.如果调用s_client命令和servername设置您想联系应该工作的ServerName参数.

示例基本命令:

s_client -connect example.com:443 -tls1 -servername example.com
Run Code Online (Sandbox Code Playgroud)

您可以s_clients_client手册页中找到选项.