记一次https通讯调试过程

news/2024/9/24 18:02:08

情况说明:和服务端https交互时,用域名的方式会有正常的应答,用指定IP的方式则提示异常。

代码抛出异常如下:

javax.net.ssl.SSLHandshakeException:Remote host closed connection during handshake
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl,java:882)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSSocketImpl.java:1188)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(SSSocketImpl.java:654) 
at com.sun.net.ssl.internal.ssl.AppOutputstream.write(AppOutputstream.java:100)
at org.apache.http.impl.io.AbstractSessionoutputbuffer.flushBuffer(AbstractSessionOutputBuffer java:131) [httpcore-4 1.4.jar:4.1.4)

 

用curl测试如下:

curl -X Post -H "Content-Type:application/json" "https://www.zjoj.com.cn:5858/api/Bank/SaveBankAccount?appid=10016"
{"data":false,"code":104,"message":"Object reference not set to an instance of an object."}
curl -X Post -H "Content-Type:application/json" "https://121.41.60.113:5858/api/Bank/SaveBankAccount?appid=10016"
curl: (60) schannel: SNI or certificate check failed: SEC_E_WRONG_PRINCIPAL (0x80090322) - 目标主要名称不正确。
More details here: https://curl.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.

 

在idea使用JetClient,测试结果如下:

 

 报错信息为"Certificate for 121.41.60.113> doesn't match any of the subject alternative names:[]"

经查阅资料,了解一般ssl证书验证,会校验证书包含的一些信息,其中会有目标域和证书中的CN是否匹配,如下:

 由于直接指定IP时,IP和DN值不匹配,导致证书验证失败,提示交互失败。

解决办法:

  1. 直接使用域名访问;
  2. 使用指定IP访问时,自定义变量Host为域名的值,这样校验时就会用Host的值与证书的DN值做比较;
  3. 代码里不对证书DN值做校验(不推荐,有安全风险)

写在后面:

由于当前项目使用的jdk版本为1.6,不支持一些算法,比如TLS,可以考虑手工将所需算法补充到当前jdk中,或者直接升级jdk到idk1.8.0 162及更高版本。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/46421.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

【YOLOv8改进 - 特征融合NECK】 HS-FPN :用于处理多尺度特征融合的网络结构,降低参数

摘要 在标准的医院血液检测中,传统过程需要医生使用显微镜从患者的血液显微图像中手动分离白细胞。然后,这些分离出的白细胞通过自动白细胞分类器进行分类,以确定血液样本中不同类型白细胞的比例和数量,从而辅助疾病诊断。这种方法不仅耗时费力,而且由于图像质量和环境条件…

VM Ware虚拟机设置静态IP(NAT模式)

设置VM Ware虚拟机静态IP 解决步骤 1. 确保VM Ware相关服务正常启用 “此电脑”-->右击“管理”,在服务中看VM Ware的相关服务是否已经开启,确保已开启。2. 设置VM Ware虚拟网络编辑器 在VM Ware 顶部菜单栏 --> “编辑” --> “虚拟网络编辑器”3. 编辑虚拟机设置4…

dotnet 6 破坏性改动 仅引用程序集输出路径变更

在 dotnet 5 开始,可以设置 ProduceReferenceAssembly 为 true 让项目构建时输出仅引用程序集。仅引用程序集是仅导出项目的公开成员定义,而不包含具体的实现的代码逻辑。只用来被其他项目引用,体积很小,但不用来作为最终发布文件在此前的如下博客里面已经告诉大家如何创建…

又跳槽!3年java经验offer收割机的面试心得

中厂->阿里->字节,成都->杭州->成都 系列文章目录和关于我 0.前言 笔者在不足两年经验的时候从成都一家金融科技中厂跳槽到杭州阿里淘天集团,又于今年5月份从杭州淘天跳槽到成都字节。自认为自己在面试这方面有一点心得,处于记录和分享的目的便有了此文,此文纯…

Git的安装及使用

官网:Git for Windows 点击下载安装。右击鼠标会出现GUI和Bash 选择git bash here 配置全局用户名和邮箱(gitee)git config --global user.name "你的名字" git config --global user.email 你的邮箱 查看配置git config user.name git config –list 配置 SSH…

【YOLOv8改进】 ODConv(Omni-Dimensional Dynamic Convolution):全维度动态卷积

摘要 在现代卷积神经网络(CNN)中,每个卷积层中学习单个静态卷积核是常见的训练范式。然而,最近在动态卷积的研究中表明,通过学习 n 个卷积核的线性组合,并且这些卷积核的权重取决于它们的输入相关注意力,可以显著提高轻量级 CNN 的准确性,同时保持高效的推理。但是,我…

使用mongodb、Kafka保存mqtt消息

一、引言 随着物联网技术的迅猛发展,大量的设备和传感器产生了海量的数据。本文利用了 MQTT、Kafka 和 MongoDB 各自的优点,满足实时数据处理和大规模数据存储的需求。 如图:二、总结 优点:1. 可靠和解耦: Kafka的复制机制和持久化存储确保了数据在传输过程中的可靠性,即…

【C#】WPF 类库项目 无法创建 “资源字典” 文件

解决办法 打开项目工程文件 ( project.csproj) 在 标签添加 下面红色的三句话<Deterministic>true</Deterministic><ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> <…