连接中出现未知的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_errorstr
的http.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虽然没有受到影响,但请随时查看此页面了解更多信息:
所以,稍后再试,可以自行解决。 为我做了
我在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)时,然后我试图部分地推它,并被成功推送。