文档首页/ 代码托管 CodeArts Repo/ 常见问题/ 认证鉴权问题/ TLS协议握手失败并报错"ssl handshake failure"
更新时间:2024-11-11 GMT+08:00

TLS协议握手失败并报错"ssl handshake failure"

问题现象

本地执行如下命令,与指定服务器建立TLS1.0连接并获取其证书信息。

openssl s_client -connect test.com:443 -tls1

会出现如下报错信息:

CONNECTED(00000003)
140155533838224:error:1409442E:SSL routines:ssl3_read_bytes:tlsv1 alert protocol version:s3_pkt.c:1493:SSL alert number 70
140155533838224:error:1409E0E5:SSL routines:ssl3_write_bytes:ssl handshake failure:s3_pkt.c:659:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 0 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1
    Cipher    : 0000
    Session-ID: 
    Session-ID-ctx: 
    Master-Key: 
    Key-Arg   : None
    Krb5 Principal: None
    PSK identity: None
    PSK identity hint: None
    Start Time: 1720443876
    Timeout   : 7200 (sec)
    Verify return code: 0 (ok)
---

原因分析

CodeArts Repo当前支持TLS1.2、TLS1.3协议版本。

处理方法

  1. 在Git Bash客户端执行如下命令,查看您的Git版本。

    git --version

  2. 如果您的Git版本低于2.6.0,请将您本地的Git客户端升级到最新版本,最新版本的Git客户端默认支持TLSv1.2协议。如果您的Git版本不低于2.6.0,您也可以使用如下命令指定TLS协议的版本。

    openssl s_client -connect test.com:443 -tls1_2

表1 已知的不兼容客户端

客户端

说明

Git Credential Manager for Windows< v1.14.0

默认不支持TLSv1.2可以通过更新到最新版Git客户端来解决,最新版版本的GitBash自带Git-Credential-Manager功能,只需要在安装时勾选即可。

Git on Red Hat 5

  • 不支持TLSv1.2;
  • 建议Red Hat 5的用户升级到更新版本的操作系统。

Git on Red Hat 6

默认不支持,升级版本至6.8(或更高)可支持。

Git on Red Hat 7

默认不支持,升级版本至7.2(或更高)可支持。

JDK7

默认情况下为TLSv1,运行的任何客户端(例如Eclipse自带的JGit这样的流行客户端)都会受到影响,可明确选择TLSv1.2来解决。

JDK6及以下

  • 不支持TLSv1.2;
  • 建议JDK6及以下的用户升级到较新版本的JDK。

Visual Studio

  • ​Visual Studio附带了特定版本的Git for Windows和Git Credential Manager for Windows(GCM);
  • Microsoft已更新Visual Studio 2017的最新版本以与TLSv1.2 Git服务器配合使用;
  • 建议Visual Studio用户通过单击产品内通知标志或直接从IDE检查更新来升级到最新版本;
  • Microsoft已在Visual Studio开发人员社区支持论坛上提供了其他指导。

第三方Git图形客户端

如果您使用的是Eclipse、JetBrains、SourceTree、VSCode、Tower、TortoiseGit等第三方Git客户端时,建议下载最新的GitBash客户端,在工具中设置使用原生(Native)的Git,而不是Build-in类型。

  • IDEA设置方式

  • Eclipse设置方式