我想将我的提交推送到Bitbucket存储库但是发生了以下错误:
Fatal: unable to access 'https://myUsername@bitbucket.org/myUsername/myRepository.git/': Unknown SSL protocol error in connection to bitbucket.org:443
VonC.. 56
您可以获得更多信息
# 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的更多信息:
见Shawn Pearce()提交0054045(2016年2月14日).(由Junio C Hamano合并- -在97c49af承诺中,2016年2月24日)spearce
gitster
remote-curl
:包括curl_errorstr
SSL设置失败对于
curl
错误35(CURLE_SSL_CONNECT_ERROR
),用户需要存储其他文本CURLOPT_ERRORBUFFER
来调试连接未启动的原因.
这是curl_errorstr
在里面的http.c
,所以如果它是非空的那么包括在消息中.
另请查看该消息的常见原因:
如果它之前正在工作,而今天不工作,则可能是SSL私钥在BitBucket端已过期(见下文,原因#3),但这似乎不是这种情况(证书有效直到2014年12月3日).
触发如下所示的请求会导致出现"未知SSL协议"错误:
curl --sslv2 https://techstacks-tools.appspot.com/
为什么?那么,在这种情况下,这是因为techstacks工具站点不支持SSLv2,因此产生curl(35)错误.
您可能正在尝试使用站点配置为拒绝的ssl密码连接到站点.
例如,通常在面向客户的ssl加密站点上禁用匿名密码.(我们中的许多人在任何SSL加密的网站上设置了一揽子拒绝政策 - 无论其目的如何.)
以下命令字符串"can"也会导致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套接字已经启动但是由于握手失败,套接字永远无法完成.
尝试使用站点支持的密码连接到站点.不确定使用哪种密码?好吧,让我介绍一下我的cryptonark ssl密码测试器 ......
我今天早些时候遇到过这个与旧的WebSeAL网站合作的人.
在IBM GSKit中,您可以指定私钥密码的有效时间.到达某个特定日期后,您仍然可以启动webseal并在端口443上侦听(或者将您的https-port值设置为),但您将无法成功协商SSL会话.
在今天的情况下,旧的WebSEAL实例使用长期过期的kdb文件和一个长期过期的私钥密码.一旦用正确的,更新的版本替换,一切都再次起作用.
一些ISP和DNS提供商喜欢拦截您失败的DNS查询,以便将您重定向到搜索引擎结果样式页面,为您提供替代URL或"您的意思是......?" 反查询结果.
如果您看到如下错误:
error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol,
这可能是由于您错误地键入主机名或主机名尚未在您的DNS中列出.您可以使用简单的"
host
"或"nslookup
" 来验证.
注(2015年8月):Git 2.6 +(2015年第3季度)将允许明确指定SSL版本:
http
:添加对指定SSL版本的支持
请参阅Elia Pinto()提交01861cb(2015年8月14日).
帮助:Eric Sunshine().(由Junio C Hamano合并- -在提交ed070a4,2015年8月26日)devzero2000
sunshineco
gitster
http.sslVersion
如果要强制使用默认值,则在协商SSL连接时使用的SSL版本.
可用和默认版本取决于libcurl是针对NSS还是OpenSSL构建的,以及正在使用的加密库的特定配置.在内部设置'CURLOPT_SSL_VERSION
'选项; 有关此选项的格式以及支持的ssl版本的更多详细信息,请参阅libcurl文档.
实际上,此选项的可能值为:
SSLV2
SSLV3
使用TLSv1
tlsv1.0
tlsv1.1
TLSv1.2工作
可以被'
GIT_SSL_VERSION
'环境变量覆盖.
要强制git使用libcurl的默认ssl版本并忽略任何显式http.sslversion
选项,请将'GIT_SSL_VERSION'设置为空字符串.
谢谢@VonC-使用“ export GIT_SSL_VERSION = tlsv1.1”为我解决了这个问题(在手动重新构建git后使用libcurl.so.4)。没有这个,我无法将git连接到visualstudio.com(Visual Studio在线)。 (2认同)
Jordfräs.. 41
根据bitbucket 知识库,它也可能是由于存储库的所有者超出了计划限制.
如果你向下看页面,似乎也可以通过使用太旧的git版本来触发此错误(目前需要1.7).