首页 > 其他分享 >记一次https通讯调试过程

记一次https通讯调试过程

时间:2024-06-22 10:31:28浏览次数:12  
标签:通讯 java ssl https curl com net 调试

情况说明:和服务端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及更高版本。

标签:通讯,java,ssl,https,curl,com,net,调试
From: https://www.cnblogs.com/ricehome/p/18261911

相关文章

  • STM32三种调试工具CMSIS-DAP、J-Link和ST-Link
    一.概述CMSIS-DAP、J-Link和ST-Link均是嵌入式处理器的开发调试工具。CMSIS-DAP是一种轻量级调试接口,旨在实现开源的开发调试。它的优点是使用方便、通用性好、成本低,还支持固件的在线升级。J-Link是一款由德国公司SEGGERMicrocontroller开发的高性能调试工具。但是价格较......
  • CM3调试系统简析
    CM3调试系统简析**“一直以来,单片机的调试一直不是很突出的主题,很多简单些的程序在开发中,甚至都没有调试的概念,而只是把生成的映像直接烧入片子,再根据错误症状来判断问题,然后修改程序重新烧,周而复始,直到问题解决或放弃为止。”**—《Cortex-M3权威指南》大部分初学者......
  • Fiddler 是一个功能强大的网络调试工具,通过掌握其高级功能,您可以更深入地进行流量分析
    Fiddler是一个功能强大的网络调试工具,主要用于捕获、检查和修改HTTP请求和响应。以下是一个Fiddler初级应用的大纲,帮助你快速了解如何使用它进行网络调试和分析:1. 安装和基本设置下载和安装Fiddler。启动Fiddler,并了解主界面的基本布局。配置浏览器或应用程序以使用......
  • python---学生通讯录
    代码:importcsvstudents=[]defmenu():    print("学生信息管理")    print("1.显示学生信息")    print("2.添加学生信息")    print("3.删除学生信息")    print("4.保存学生信息")    print("5.退出")defadd():    student={}    ......
  • vue-devtools (firefox浏览器,火狐浏览器) Vue调试
    vue-devtools(firefox浏览器,火狐浏览器)vuedevtools  vue-devtools(firefox浏览器) 打开firefox浏览器,使用快捷键【Ctrl+Shift+A】打开组件管理列表,并搜索vue  安装   重启Firefox 访问一个Vue应用,打开开发者工具 ......
  • Nginx 反向代理 (泛域名->泛域名,https,静态文件)
    Nginx反向代理配置指南(泛域名->泛域名,HTTPS,静态文件)完整版server{#监听80端口listen80;listen443sslhttp2;; #...... #泛域名server_name*.{fromName}.com;#获取"*"参数set$subdm'';if($host~*"(.*......
  • 应用同时支持HTTP和HTTPS
    生成证书:keytool-genkeypair-keystoretest.jks-aliastest-keyalgRSA-keysize2048-validity3650应用配置:server:port:18081#httpshttp-port:8081#httpssl:key-store:/test.jks#密钥库路径key-store-password:ENC(djVg6Ri/rp7cHwh9ZTmq/Q==)......
  • Modbus协议转Profibus协议网关接温控表与PLC通讯
    Modbus协议转Profibus协议网关接温控表与PLC通讯一、前言在智能化飞速发展的时代,各个行业都在使用自动化系统。在智能楼宇系统中,温控表和PLC(可编程逻辑控制器)通讯是至关重要的,在智能楼宇系统中,温控表起着监测和控制室内温度的重要作用。而PLC作为控制中心,负责接收温控表传输的数......
  • Docker + Visual Studio Code IDE实现PHP Xdebug调试
    目录一、前期准备二、配置文件1.VisualStudioCodeIDE配置2、配置docker中php的xdebug.ini三、开始调试参考文档一、前期准备1、安装VSCode软件;2、在VSCode中安装PHPDebug插件;3、安装好Docker4、在容器中php中安装安装Xdebug扩展根据这个链接操作即可:X......
  • java httpsession
    bychatgpt=>HttpSessionHttpSession是JavaServletAPI提供的一个接口,用于管理与单个用户相关的会话信息。会话(session)是在服务器端保存的与客户端用户交互的一系列请求和响应之间的状态信息。以下是HttpSession的详细解释:HttpSession的作用HttpSession用于在用户的多......