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

时间:2014-08-25 12:20:04

标签: 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

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

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

OpenSSL> s_client -connect server:443

这是运行命令的输出:

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
---

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

2 个答案:

答案 0 :(得分:10)

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

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

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

答案 1 :(得分:10)

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

如果这没有帮助,请检查端点是否需要SNI。如果是这种情况,这可能是问题所在。如果您调用s_client命令并将servername参数设置为您要联系的服务器名称,则该名称应该有效。

基本命令示例:

s_client -connect example.com:443 -tls1 -servername example.com

您可以在s_client man page找到s_client的选项。