连接中出现未知的SSL协议错误

时间:2013-12-10 09:48:57

标签: git ssl push bitbucket atlassian-sourcetree

我想将我的提交推送到Bitbucket存储库但是发生了这个错误:

Fatal: unable to access
'https://myUsername@bitbucket.org/myUsername/myRepository.git/':
Unknown SSL protocol error in connection to bitbucket.org:443

16 个答案:

答案 0 :(得分:53)

您可以使用

获取更多信息
# Windows
set GIT_CURL_VERBOSE=1
set GIT_TRACE_PACKET=2

# Unix
export GIT_CURL_VERBOSE=1
export GIT_TRACE_PACKET=2

然后尝试git push

如果您有代理设置,请仔细检查。

注意:git 2。8(2016年3月)添加了有关错误35的更多信息:

commit 0054045Shawn Pearce (spearce)(2016年2月14日) Junio C Hamano -- gitster --于2016年2月24日commit 97c49af合并)

  

remote-curl:在SSL设置失败时包含curl_errorstr

     

对于curl错误35(CURLE_SSL_CONNECT_ERROR),用户需要存储在CURLOPT_ERRORBUFFER中的其他文字来调试连接未启动的原因。   这是curl_errorstr内的http.c,因此如果邮件非空,请将其包括在内。


另请查看common causes for that message

如果它之前正在工作,而今天没有工作,则可能在BitBucket端SSL SSL私钥已过期(见下文,原因#3),但这似乎不是这里的情况(证书有效期至2014年3月12日。)


目标站点不喜欢协议

  

关闭如下所示的请求会导致出现“未知SSL协议”错误:

curl --sslv2 https://techstacks-tools.appspot.com/
  

为什么呢?那么,在这种情况下,这是因为techstacks工具站点不支持SSLv2,因此产生curl(35)错误。

目标站点不像密码

  

您可能尝试使用网站配置为拒绝的ssl密码连接到网站   例如,通常在面向客户的ssl加密站点上禁用匿名密码。 (我们中的许多人在任何SSL加密的网站上设置了一揽子拒绝政策 - 无论其目的如何。)
  以下命令字符串"可以"也会导致curl(35)错误:

curl --ciphers ADH-RC4-MD5 https://some_web_site.some_domain.com/
  

不幸的是,你可以从curl获得的错误响应类型在很大程度上取决于ssl服务器。在某些网站上,您会收到未知的SSL协议错误,但在我的techstacks-tools网站上,我得到:

curl: (35) error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
  

感谢Google,因为这个特定错误比我工作的网站产生的描述更具描述性,因为这至少告诉您ssl套接字已启动,但由于握手失败,套接字永远无法完成。< / p>      

尝试使用网站支持的密码连接到网站。不确定使用哪种密码?好吧,让我介绍一下cryptonark ssl cipher tester ...

SSL私钥已过期

  

我今天早些时候遇到过这个与旧的WebSeAL网站合作的人   在IBM GSKit中,您可以指定私钥密码的有效时间。到达某个特定日期后,您仍然可以启动webseal并在端口443上侦听(或者将您的https-port值设置为),但您将无法成功协商SSL会话。
  在今天的情况下,旧的WebSEAL实例使用长期过期的kdb文件和长期过期的私钥密码。一旦替换为正确的,更新的版本,一切都会再次发挥作用。

重定向不正确

  

某些ISP和DNS提供商喜欢拦截您失败的DNS查询,以便将您重定向到搜索引擎结果样式页面,为您提供替代网址或者&#34;您的意思是......?&# 34;反查询结果   如果您看到如下错误:

 error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol, 
  

可能是由于您错误地键入了主机名或者主机名尚未在您的DNS中提交。您可以使用简单的&#34; host&#34;来验证这一点。或&#34; nslookup&#34;。


注意(2015年8月):Git 2.6 +(2015年第3季度)将允许明确指定SSL版本:

  

http:添加对指定SSL版本的支持

commit 01861cbElia Pinto (devzero2000)(2015年8月14日) 帮助:Eric Sunshine (sunshineco)
(由Junio C Hamano -- gitster --合并于commit ed070a4,2015年8月26日)

http.sslVersion
  

协商SSL连接时使用的SSL版本,如果要强制使用默认值   可用和默认版本取决于libcurl是针对NSS还是OpenSSL构建的,以及正在使用的加密库的特定配置。在内部设置了CURLOPT_SSL_VERSION&#39;选项;有关此选项的格式以及支持的ssl版本的更多详细信息,请参阅libcurl文档   实际上,此选项的可能值为:

     
      
  • SSLV2
  •   
  • SSLV3
  •   
  • 使用TLSv1
  •   
  • tlsv1.0
  •   
  • tlsv1.1
  •   
  • TLSv1.2工作
  •   
     

可以被&#39; GIT_SSL_VERSION&#39;覆盖。环境变量。
  要强制git使用libcurl的默认ssl版本并忽略任何显式http.sslversion选项,请设置&#39; GIT_SSL_VERSION&#39;到空字符串。

答案 1 :(得分:41)

根据bitbucket knowledgebase,它也可能是由于存储库的所有者超出了计划限制。

如果你向下看页面,似乎也可以通过使用太旧的git版本来触发此错误(目前需要1.7)。

答案 2 :(得分:19)

设置以下git设置为我解决了这个问题

git config --global --add http.sslVersion tlsv1.0

我猜测公司代理服务器不喜欢默认的加密协议。

答案 3 :(得分:14)

在许多情况下,它与代理问题有关。 如果是这样,只需配置你的git代理

git config --global http.proxy HOST:PORT

答案 4 :(得分:5)

此错误也会在服务器关闭时出现。技术支持部门就此问题发送电子邮件:

  

“我们遇到了影响网站流量的中断,因为   以及通过HTTPS的Mercurial和Git流量。 SSH没有受到影响   虽然。请随时查看此页面以获取更多信息:

     

http://status.bitbucket.org/

所以稍后再试,它可以自行解决。为我做了

答案 5 :(得分:5)

我在公司代理人身后得到了这个。

解决方案:

git config http.sslVerify "false"

答案 6 :(得分:1)

我遇到了同样的问题。使用最后一个版本的git而没有代理。

我修好了它:

  • 登录GitHub
  • 进入界面:&#34;个人设置&#34;,然后点击&#34; SSH密钥&#34; 请确认您是否已将&#39; id_rsa.pub&#39;由命令生成的
  • &#39; ssh-keygen -t rsa&#39;在windows上进入github - &gt; GIT BASH
  • &#39;添加SSH密钥&#39;并把&#39; id_rsa.pub&#39;进入它。

更多信息: create the key

copy the key

答案 7 :(得分:1)

我在Android Studio 2.1.3中使用版本控制时遇到了这个问题,我面临的情况如下:

1-我打开IDE并点击“更新/拉动”图标(Ctrl + T)

2-它没有询问主密码而且失败了,给了我这个错误:

Unknown SSL protocol error in connection to bitbucket.org:443

3-我试图获取存储库(右键单击&gt; git&gt;存储库&gt;获取)

4-它问我主密码,我输入了

5-它试图获取但它一次又一次地失败

6-我重启 Android工作室

7-我试图获取存储库(右键单击&gt; git&gt;存储库&gt;获取)

8-它问我主密码,我输入了

9-现在事情确定,一切都很顺利

结论

也许Android Studio在任何git操作之前首先需要Master密码,否则即使它稍后要求使用Master密码也会失败,我不知道,这是发生在我身上的情况

答案 8 :(得分:0)

拥有2台电脑,

头号是我的企业实验室顶层通过VPN连接到我们的企业网络。这就像是在大型防火墙和一堆路由器背后的公司内部,民用,内部和外部(甚至是电信)在网络和防火墙上摆弄,并且为了伸手可及,我必须提供诸如代理用户和密码,即使这样,有时它工作,有时不工作。

即。我可以使用SVN JSVN MAVEN下载,ANT下载通过防火墙,我可以使用git clone http://git ... repos。

但我不能做git clone https://git ... repo。 我这个最新的案例我得到了这个错误。

我现场的第二台计算机是我家里的小实验室,没有什么特别的,通过WAN连接到www并使用上面提到的所有工具加上git clone https://git。回购工作就像嗅到没有特别的东西。

结论:坐在“某种程度上管理的防火墙”背后通常是麻烦的原因。为了解决这个问题,请带上你的小型无保护实验室顶部并在家中建立www连接,如果它运行,不要浪费时间与你的安全人员,他们将工作数周,除非知道为什么它不起作用你的case,也许你可以用便携式驱动器共享克隆的git repo。

约瑟夫 - 在这种情况下浪费时间变老; - )

答案 9 :(得分:0)

我使用 tortoiseGit 。我有同样的问题。然后在推送设置中,我取消选中“ autoload putty key ”,尝试推送,然后我再次检查,然后推送,并且它有效。但说真的,我不知道为什么。

答案 10 :(得分:0)

执行

nc -v -z <git-repository> <port>

你的出局看起来应该是

"Connection to <git-repository> <port> port [tcp/*] succeeded!"

如果你得到

connect to <git-repository> <port> (tcp) failed: Connection timed out

您需要修改~/.ssh/config文件。添加如下内容:

Host example.com
Port 1234

答案 11 :(得分:0)

我目前偶尔出现的公司HTTP代理会出现此错误。我可以通过在浏览器中访问bitbucket.org然后重新命令来修复它。不知道为什么会这样,但它确实为我解决了(至少暂时)。

答案 12 :(得分:0)

如果您遇到“与bitbucket.org:443相关的未知SSL协议错误”并且您在中国,可能github暂时被防火墙阻止。您可以尝试使用VPN,这将有用。祝你好运!

答案 13 :(得分:0)

当我推出大量的资源(接近700Mb)时,这个错误发生在我身上,然后我尝试将其部分推出并成功推送。

答案 14 :(得分:0)

我遇到了同样的问题,尝试了所有更改此处提供的SSL设置。如果您在企业网络中并使用像Gerrit这样的工具中使用的ssh密钥。 1.获取你的密钥, 2.访问Bitbucket并导航至Profile&gt;&gt;设置&gt;&gt; SSH密钥&gt;&gt;添加密钥。

添加ssh键后,尝试再次按下。

答案 15 :(得分:0)

我能够通过运行

解决它
CookieAuthenticationHandler

然后看到我有一行:

file:c:/Users/user/.gitconfig http.sslversion = sslv3

我编辑了文件c:/Users/user/.gitconfig,并删除了[http]行和sslversion = sslv3行,并为我修复了该文件。