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

我想推我的提交到一个Bitbucket存储库,但出现此错误:

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

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

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

你可以得到更多的信息

 # 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的更多信息:

见肖恩·皮尔斯( spearce )的 提交0054045 (2016年2月14日) 。
(由Junio C gitster合并- gitster -在第97c49af号 ,2016年2月24日)

remote-curl :在SSL安装失败时包含curl_errorstr

对于curl错误35( CURLE_SSL_CONNECT_ERROR ),用户需要存储在CURLOPT_ERRORBUFFER的附加文本来debugging连接没有启动的原因。
这是curl_errorstrhttp.c ,所以在消息中包含非空的消息。


还请查看该消息的常见原因 :

如果它以前工作,而不是今天工作,有可能在BitBucket方面SSL私钥已经过期(见下面的原因#3),但这似乎并不是这样(证书是有效的,直到2014年12月3日)。


目标网站不喜欢该协议

解决类似下面的请求会导致未知的SSL协议错误:

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

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

目标站点不喜欢密码

您可能正尝试使用该站点configuration为拒绝的ssl密码连接到该站点。
例如,通常在面向客户的sslencryption站点上禁用匿名密码。 (我们中的许多人在任何SSLencryption的网站上都设置了一揽子拒绝政策 – 不pipe它的目的是什么。)
以下命令string“can”也会导致curl(35)错误:

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

不幸的是,你可以从curl中获得的错误响应的types在很大程度上取决于ssl服务器。 在某些站点上,您将收到未知的SSL协议错误,但在我的Techstacks工具网站上,我得到:

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

对谷歌的荣誉,因为这个特定的错误是比我的网站在工作中产生一个更具描述性,因为这至less告诉你,SSL套接字已启动,但由于握手失败,套接字永远无法完成。

尝试使用该网站支持的密码连接到该网站。 不确定使用哪个密码? 那么让我来介绍一下我的cryptonark SSL密码testing仪 。

SSL私钥已过期

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

不正确的redirect

某些ISP和DNS提供商喜欢拦截失败的DNS查询,以便将您redirect到search引擎结果样式的页面,为您提供替代的URL或“您的意思是…? 反查询结果。
如果你看到这样的错误:

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

这可能是由于您错误地input了主机名,或者主机名尚未显示在您的DNS中。 你可以用一个简单的“ host ”或“ nslookup ”来validation。


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

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

参见Elia Pinto( devzero2000 )的 commit 01861cb (2015年8月14日) 。
帮助: 埃里克阳光( sunshineco ) 。
(由Junio C gitster合并- gitster – in commit ed070a4 ,2015年8月26日)

 http.sslVersion 

协商SSL连接时使用的SSL版本,如果您要强制使用默认值。
可用和默认版本取决于libcurl是否针对NSS或OpenSSL构build,以及正在使用的encryption库的特定configuration。 在内部设置“ CURLOPT_SSL_VERSION ”选项; 请参阅libcurl文档以获取有关此选项格式和支持的ssl版本的更多详细信息。
其实这个选项的可能值是:

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

可以被' GIT_SSL_VERSION '环境variables覆盖。
要强制git使用libcurl的默认ssl版本并忽略任何明确的http.sslversion选项,请将“GIT_SSL_VERSION”设置为空string。

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

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

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

在很多情况下,它与代理问题有关。 如果这样configuration你的git代理

  git config --global http.proxy HOST:PORT 

我是在一个公司代理的后面。

解决:

git config http.sslVerify "false"

这个错误也出现在服务器closures。 来自技术支持的电子邮件:

“我们经历了一个中断,它影响到网站的stream量,以及通过HTTPS的Mercurial和Gitstream量,SSH虽然没有受到影响,但请随时查看此页面了解更多信息:

http://status.bitbucket.org/

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

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

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

– 它没有要求主密码,它失败了,给了我这个错误:

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

3 – 我试图获取存储库(右键> git> repository> fetch)

4-它问我的主密码,我input它

5,它试图抓取,但一次又一次地失败

6 – 我重新启动 Android工作室

7 – 我试图获取存储库(右键单击> git>存储库>获取)

8它问我的主密码,我input了它

现在事情还好 ,一切都好起来

结论

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

有2台电脑,

最重要的是我的企业实验室通过VPN连接到我们的公司networking。 这就像在大型防火墙和一堆路由器背后的公司里面,有民间,内部和外部(甚至是电信)在networking和防火墙上摆弄,为了接触,我必须提供代理用户和密码,甚至在那个时候,有时它的工作,有时不。

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

但我不能做git clone https:// git …回购。 我这个最新的情况,我得到这个错误。

现场与我的第二台计算机是我在家里的小实验室,没有什么特别的,通过广域网连接到www和上面提到的所有工具与git clone https:// git … repo工程没有做一些特别的事情就像嗅。

结论:坐在“pipe理防火墙”后面往往是麻烦的原因。 为了解决这个问题,把你的小保护实验室,并在家里有一个www连接,如果它运行,不要浪费你的安全人员的时间,他们将工作几个星期,除非知道为什么它不起作用的情况下,也许你可以分享一个便携式驱动器的克隆git回购。

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

我使用tortoiseGit 。 我有同样的问题。 然后在推设置我取消选中“ 自动加载腻子钥匙 ”,试图推,然后我再次检查,并推动,它的工作。 但严重的是,我不知道为什么。

执行

 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 

我目前正在零星地背后的公司HTTP代理给出了这个错误。 我可以通过在浏览器中访问bitbucket.org来解决这个问题,然后重新input命令。 不知道为什么这个工作,但它确实为我(至less暂时)。

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

我得到同样的问题。 与最后一个版本的git和没有代理。

我修好了它:

  • loginGitHub
  • 进入界面:“个人设置”,然后点击“SSH密钥”,确认是否已经把命令生成的“id_rsa.pub”
  • 'ssh-keygen -t rsa'在windows上进入github – > GIT BASH
  • '添加SSH密钥'并将'id_rsa.pub'放入其中。

更多信息: 创build密钥

复制密钥

这个错误发生在我推送大量的源(近700Mb)时,然后我试图部分地推它,并被成功推送。