问题 git麻烦通过https:例程:SSL23_GET_SERVER_HELLO


我在centos发行版上创建了自己的git服务器。 我可以通过家里的git协议联系服务器。但是当我尝试通过https在办公室访问时,我获得:

克隆到/ Users / vito / Documents / ...错误:   错误:14077458:SSL例程:SSL23_GET_SERVER_HELLO:reason(1112)while   访问 HTTPS://gitolite@myserverxyz.com/vitorepo.git/info/refs

致命:HTTP请求失败

哪里有问题?在我的服务器上或我的办公室mac?


8247
2017-10-14 11:30


起源

您的git服务器实际上是否在您的家庭子网之外可用?你可以说,从工作中成功通过SSH吗? - Matt Ball
是。我的服务器是一个打开所有有用端口的公共服务器。 - Vito


答案:


尝试连接运行openssl 1.0.0e的ubuntu实例时,我从curl得到了完全相同的响应。我通过添加成功解决了这个问题 -ssl3 标志为curl命令。


7
2018-04-18 00:11



你先生是个天才。我不得不从os x做到这一点。你能解释一下为什么会这样吗? - Kyle Clegg


似乎是作为客户端的旧版本OpenSSL(0.9.8)与作为服务器的最新OpenSSL版本(1.0.0)之间的兼容性问题,其中客户端和服务器端的Apache使用了一些特定选项。

这可能是由于OpenSSL最近的一些安全修复(可能是针对协议降级攻击的安全修复)。

尝试将客户端的OpenSSL库版本升级到1.0.0。

看到:

https://sourceforge.net/tracker/?func=detail&atid=100976&aid=3395520&group_id=976


3
2017-11-09 15:20





万一有人对XMLRPC有这个问题。

Daniel的回答(强制使用SSL版本3)为我解决了这个问题。只需在clientXmlTransport_curl选项(C ++)中指定XMLRPC_SSLVERSION_SSLv3即可。

当我们将服务器升级到OpenSSL版本1.0.1-4ubuntu5.5并且客户端仍在运行0.9.8o-5ubuntu1.7时,问题就出现了。


2
2017-10-30 20:00





我相信这是服务器上的主机名匹配问题。错误1112是SSL_R_TLSV1_UNRECOGNIZED_NAME,来自SNI名称不匹配(有关SNI的信息)。我也一样 卷曲问题

对我来说,解决方法是确保我在客户端上使用的名称与服务器上的ServerName或ServerAlias配置之一匹配。当然,这些命令适用于apache服务器;我不知道你需要为git服务器做些什么。但我怀疑你在家和工作中使用的服务器名称是不同的,并且主页名称是git服务器正在使用的名称(因此SNI正在工作)。

“真正的”修复可能会改变git中的客户端,以便忽略名称不匹配警告(浏览器已经采用的方式)。


1
2017-11-29 19:24





不确定我是否有完全相同的问题,但错误信息是相同的。它似乎只发生在我设置了一个git服务器的ubuntu盒子上,出于某种原因,设置了git服务器的centos盒子很好。

我只是在3或4天后解决了它。结果是因为git的底层Curl库有一个破坏的Keep-alive实现(我最终转储了HTTP流量并手动验证了行为)。

简而言之,Curl(至少我可以找到的每个Git实现中使用的版本,包括命令行git和eclipse的EGit)似乎没有正确解释Connection响应头,或者更正确地似乎没有正确解释缺席它

要解决此问题,您需要在为GIT存储库提供服务的apache中配置SSL虚拟主机,并使用专门针对git的额外指令。在</ VirtualHost>之前添加这些行。

 BrowserMatch "git" nokeepalive ssl-unclean-shutdown

遗憾的是,你无法告诉apache只是降级到HTTP / 1.0(会更干净),因为Curl无法处理,但你可以告诉它强制连接:关闭Curl确实知道如何处理的每个请求。

在一个误导性的巧合中,如果你尝试直接测试Curl而没有这个改变,它似乎会起作用,因为它只产生一个请求然后中止。只有通过让curl在ssl上的同一个keep-alive连接上执行两个请求才能解决这个问题。


1
2017-10-05 22:18





我有同样的错误。根本原因似乎是客户端/服务器openssl版本不兼容。 我已经升级了我的服务器 apt-get upgrade openssl 并升级了我的Windows git安装。

windows git客户端的组合 git version 1.9.4.msysgit.0,其中包含openssl版本: OpenSSL 0.9.8e 23 Feb 2007

和openssl版本的服务器: OpenSSL 1.0.1c 10 May 2012

似乎一起工作很好。


0
2017-07-11 22:44