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

 疯子jiushiwohaha 发布于 2023-02-11 18:44

我想将我的提交推送到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_errorstrSSL设置失败

对于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密码测试器 ......

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).

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有