Git 连接中存在未知SSL协议错误

Git 连接中存在未知SSL协议错误,git,ssl,push,bitbucket,atlassian-sourcetree,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 您可以通过以下方式获得更多信息: # Windows set GIT_CURL_VERBOSE=1 set GIT_TRACE_PACK

我想将提交推送到Bitbucket存储库,但出现以下错误:

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

您可以通过以下方式获得更多信息:

# Windows
set GIT_CURL_VERBOSE=1
set GIT_TRACE_PACKET=2

# Unix
export GIT_CURL_VERBOSE=1
export GIT_TRACE_PACKET=2
然后尝试一次git推送

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

注:git 2.8(2016年3月)增加了关于错误35的更多信息:

参见(2016年2月14日)作者。
(于2016年2月24日合并)

remote curl
:在SSL设置失败时包括
curl\u errorstr
对于
curl
error 35(
CURLE\u SSL\u CONNECT\u error
),用户需要存储在
CURLOPT\u error buffer
中的附加文本来调试连接未启动的原因。
这是
http.c
中的
curl\u errorstr
,因此如果消息非空,请将其包含在消息中


另外,请查看:

如果以前有效,但今天无效,则SSL私钥可能在BitBucket端过期(见下文,原因#3),但这里的情况似乎并非如此(证书有效期至2014年3月12日)


目标站点不喜欢该协议 触发如下请求会导致未知SSL协议错误:

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

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

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

谷歌值得称赞,因为这个特定的错误比我的网站在工作中产生的错误更具描述性,因为这至少告诉您ssl套接字已启动,但由于握手失败,套接字永远无法完成

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

SSL私钥已过期 今天早些时候,我在使用一个旧的WebSeAL网站时遇到了这个问题。
在IBM GSKit中,您可以指定私钥密码的有效期。到达某个日期后,您仍然可以启动webseal并在端口443(或您将https端口值设置为的任何端口)上侦听,但无法成功协商SSL会话。
在今天的例子中,旧的WebSEAL实例使用了过期很久的kdb文件和过期很久的私钥密码。一旦被正确的、更为最新的版本所取代,一切又恢复了正常

不正确的重定向 一些ISP和DNS提供商喜欢拦截您失败的DNS查询,以便将您重定向到搜索引擎结果样式页面,为您提供备选URL或“您的意思是…?”计数器查询结果。
如果您看到这样的错误:

这可能是因为您键入的主机名不正确,或者您的DNS中尚未列出主机名。您可以通过一个简单的“
host
”或“
nslookup
”来验证这一点


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

http
:添加对指定SSL版本的支持 参见(2015年8月14日)作者。
帮助人:。
(于2015年8月26日合并)

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

  • sslv2
  • sslv3
  • tlsv1
  • tlsv1.0
  • tlsv1.1
  • tlsv1.2
可以被“
GIT\u SSL\u VERSION
”环境变量覆盖。
要强制git使用libcurl的默认ssl版本并忽略任何显式的
http.sslversion
选项,请将“git\u ssl\u version”设置为空字符串

根据bitbucket的说法,这也可能是因为存储库的所有者超出了计划限制


如果您进一步查看页面,似乎也可以通过使用太旧的git版本(目前需要1.7)触发此错误。

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

“我们经历了一次中断,它影响了网站的流量,正如 此外,HTTPS.SSH上的Mercurial和Git流量未受影响 尽管如此。请随时查看此页面以了解更多信息:

"

因此,稍后再试一次,它可能会自行解决。我有两台电脑

第一个是我的公司实验室,通过VPN连接到我们的公司网络。这就像是在公司内部的大防火墙和一堆路由器后面,人们、内部和外部(甚至是电信)在网络和防火墙上摆弄,为了联系,我必须提供代理用户和密码等凭证,即使这样,有时有效,有时无效

i、 我可以通过防火墙使用SVN JSVN MAVEN downlaods、ANT下载,我可以使用git clone。。。回购协议

但我不能做git克隆。。。回购协议。 我发现了这个最新的案例,我得到了这个错误

和我在一起的第二台电脑是我家里的小实验台,没什么特别的
curl --sslv2 https://techstacks-tools.appspot.com/
curl --ciphers ADH-RC4-MD5 https://some_web_site.some_domain.com/
curl: (35) error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
 error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol, 
http.sslVersion
nc -v -z <git-repository> <port>
"Connection to <git-repository> <port> port [tcp/*] succeeded!"
connect to <git-repository> <port> (tcp) failed: Connection timed out
Host example.com
Port 1234
git config --global http.proxy HOST:PORT
Unknown SSL protocol error in connection to bitbucket.org:443
git config --list --show-origin