SSL Handshake Failed:解决HTTPS连接失败的常见问题和修复方法指南

频道:问答 日期: 浏览:8

以下是一些解决 HTTPS 连接失败(SSL Handshake Failed)的常见问题和修复方法:

服务器端相关

修改 Tomcat 配置

对于 Tomcat 服务器,可限制加密方式。修改 Tomcat 服务器 conf/server.xml 文件中和 Https 有关的 Connector 节点,添加 ciphers 用于指定密钥。示例配置如下:SSLEnabled=”true” clientAuth=”false” connectionTimeout=”20000” keystoreFile=”/usr/xinwei/tienlen/apache - tomcat - https/server.keystore” keystorePass=”xinwei” maxThreads=”150” port=”443” protocol=”org.apache.coyote.http11.Http11Protocol” redirectPort=”8443” scheme=”https” secure=”true” ciphers=”TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,SSL_RSA_WITH_3DES_EDE_CBC_SHA” sslProtocol=”TLS” truststoreFile=”/usr/xinwei/tienlen/apache - tomcat - https/server.keystore” truststorePass=”密码” 。添加完该配置后,重启服务器进行测试。不过,如果服务器使用的是 JDK 1.6、tomcat 7 ,配置 ciphers 启动服务后可能会报错,原因可能是不识别加密方式,这或许是 TSL 协议的版本问题。

升级 JDK 版本

可以将 JDK 升级至 1.8 版本,可能会解决因 JDK 版本过低导致的 SSL 握手失败问题。

SSL Handshake Failed:解决HTTPS连接失败的常见问题和修复方法指南

客户端相关

检查 OpenSSL 版本

在 Qt 环境中进行 HTTPS 请求报错 SSL handshake failed 时,若怀疑是 OpenSSL 版本问题,可以尝试下载不同版本的 OpenSSL 进行测试,如 1.1.1k、1.1.1u 以及最新的 3 系列版本。若更换版本后仍无法解决问题,可尝试请求另一台服务器,判断是否是目标服务器的问题。

忽略 SSL 证书校验

在某些情况下,可以忽略 SSL 证书校验进行请求,但这可能存在安全风险,仅建议在测试环境中使用。

SSL Handshake Failed:解决HTTPS连接失败的常见问题和修复方法指南

JDK 安全机制相关

替换 JCE 包

当从 JDK7 升级到 JDK8 后出现 SSL 异常信息,部分网友认为是 jdk 中 jce 的安全机制导致报错。可去 oracle 官网下载对应的 jce 包替换 jdk 中的 jce 包。JCE 所在地址为 %JAVA_HOME%\jre\lib\security 里的 local_policy.jar 和 US_export_policy.jar 。JDK7 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jce - 7 - download - 432124.html ;JDK8 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jce8 - download - 2133166.html 。

设置协议属性

在请求连接之前加上 System.setProperty("https.protocols","TLSv1.2,TLSv1.1,SSLv3") 。

SSL Handshake Failed:解决HTTPS连接失败的常见问题和修复方法指南

抓包工具相关

SSL 证书安装与迁移

若使用 Charles 抓包工具时遇到 HTTPS 请求失败,对于安卓 7.0 以上有 root 权限且使用 Magisk(面具)进行 root 的手机,由于证书安装到了‘用户证书’里无法正常抓包,需将 ssl 证书从‘用户证书’放到‘系统证书’。具体操作如下:手机下载 Charles 证书,若无法正常安装,提示需要在设置中安装,则到手机路径设置—>安全与隐私—>其他安全设置—>从设备储存安装–>CA 证书进行安装。查验证书是否安装成功,可在设置—>安全与隐私—>其他安全设置—>查看安全证书—>用户中查看。下载 movecert 模块,将压缩包上传到手机上,打开手机中的 Magisk—>模块—>从本地安装,安装该压缩包,安装成功后重启手机,之后在‘查看安全证书—>系统’中下滑到最后查找‘XK72 Ltd’证书,若有则修改成功,可正常抓取 HTTPS 包。

你可能想看: