
# 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
   ```
   
   
 
绝大多数流量不受此变化的影响。预计会有一些客户受到影响。大多数客户端都可以更新以使用TLSv1.2。
**Git-Credential-Manager-for-Windows \< v1.14.0**
Git-Credential-Manager-for-Windows \< v1.14.0不支持TLSv1.2。
可以通过更新到[最新版Git](https://gitforwindows.org/)客户端来解决,最新版版本的GitBash自带Git-Credential-Manager功能，只需要在安装时勾选即可。
**Git on Red Hat 5，\<6.8和\<7.2**
Red Hat 5,6和7随Git客户端一起提供，不支持TLSv1.2。这可以通过分别更新到版本6.8和7.2（或更高版本）来解决。Red Hat 5没有支持TLSv1.2的点发行版。建议Red Hat 5的用户升级到更新版本的操作系统。
**Java发布**
如Oracle博客文章中所述，默认情况下，TLSv1用于JDK8之前的JDK版本。JDK8更改了此行为，默认为TLSv1.2。在旧版本的JDK上运行的任何客户端（例如Eclipse自带的JGit这样的流行客户端）都会受到影响。这可以通过更新到JDK\> = 8或明确选择在JDK 7中的TLSv1.2来解决（查看https.protocols JSSE调整参数）。不幸的是，JDK \<= 6的版本不支持TLSv1.2。建议JDK \<= 6的用户升级到较新版本的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开发人员社区支持论坛上提供了其他指导。
