1、javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No name matching localhost found

使用localhost作为域名,SSL校验时报错,允许localhost认证,加入以下静态代码块:

static {//for localhost testing onlyjavax.net.ssl.HttpsURLConnection.setDefaultHostnameVerifier(new javax.net.ssl.HostnameVerifier(){public boolean verify(String hostname,javax.net.ssl.SSLSession sslSession) {if (hostname.equals("localhost")) {return true;}return false;}});}

参考: https://www.mkyong.com/webservices/jax-ws/java-security-cert-certificateexception-no-name-matching-localhost-found/

2、Caused by: java.net.SocketException: Unexpected end of file from server

由于JWS服务使用https协议,但是客户端调用时使用时,URL中配置的非https协议,服务器端没响应任何数据,而是直接和客户端进行挥手,服务器端主动断开链接。

解决:URL的链接使用https

3、Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

代码方式:客户端无法校验单向的https服务器安全性,需要客户端主动设置服务器端https校验的keystore.

public static void loadTrustStore() {System.setProperty("javax.net.ssl.trustStore", "E:/client.keystore"); //(truststore)System.setProperty("javax.net.ssl.trustStorePassword", "12345678"); //(truststore 密码 )System.setProperty("javax.net.ssl.trustStoreType", "JKS"); //(truststore 类型 )}

命令行方式:WsImport导出客户端wsdl

java -classpath "E:\programs\java\jdk1.8.0_151\lib\tools.jar" -Djavax.net.ssl.trustStore="E:/client.keystore" -Djavax.net.ssl.trustStorePassword=12345678 com.sun.tools.internal.ws.WsImport https://localhost:9090/service/sayHi?wsdl -s . -p com.shu.jwsclient.say -XdisableSSLHostnameVerification

参考:https://stackoverflow.com/questions/36316716/wsimport-unable-to-find-imported-certificate

示例:客户端调用https服务器的jws服务:

package com.shu.jwsclient.say;import java.net.MalformedURLException;
import java.net.URL;
import java.util.GregorianCalendar;import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;/*** 客户端调用服务器端方法** @author: jiangshubian* @Description:* @Date: Create in 2018-01-14 15:26* @Version: 1.0.0*/
public class JWSClientInvoker {static {//for localhost testing onlyjavax.net.ssl.HttpsURLConnection.setDefaultHostnameVerifier(new javax.net.ssl.HostnameVerifier(){public boolean verify(String hostname,javax.net.ssl.SSLSession sslSession) {if ("localhost".equals(hostname)) {return true;}return false;}});}public static void main(String[] args) throws DatatypeConfigurationException {loadTrustStore();
//        runerTest();runnerWithoutWSFile();}private static void runerTest() throws DatatypeConfigurationException {SayHiService sayHiService = new SayHiServiceImpService().getSayHiServiceImpPort();//invoke sayNothing methodsayHiService.sayNothing();//invoke saySomething methodsayHiService.saySomething("Something...");//invoke checkTime methodGregorianCalendar calender = new GregorianCalendar();calender.setTime(new java.util.Date(System.currentTimeMillis()));XMLGregorianCalendar xmldate = DatatypeFactory.newInstance().newXMLGregorianCalendar(calender);System.out.println(sayHiService.checkTime(xmldate));}private static void runnerWithoutWSFile() {URL url = null;try {url = new URL("https://localhost:9090/service/sayHi?wsdl");} catch (MalformedURLException e) {e.printStackTrace();}QName qname = new QName("http://say.jws.shu.com/", "SayHiServiceImpService");Service service = Service.create(url, qname);SayHiService sayHi = service.getPort(SayHiService.class);sayHi.sayNothing();sayHi.saySomething("runnerWithoutWSFile");}public static void loadTrustStore() {System.setProperty("javax.net.ssl.trustStore", "E:/client.keystore"); //(truststore)System.setProperty("javax.net.ssl.trustStorePassword", "12345678"); //(truststore 密码 )System.setProperty("javax.net.ssl.trustStoreType", "JKS"); //(truststore 类型 )}}

JWS-Exception相关推荐

  1. FineReport中以jws方式调用WebService数据源方案

    在使用WebService作为项目的数据源时,希望报表中也是直接调用这个WebService数据源,而不是定义数据连接调用对应的数据库表,这样要怎么实现呢? 在程序中访问WebService应用服务, ...

  2. Java实现JWS生成与验签

    前言 接了大组织的对接需求,需要对面要求采用jws方式生成签名和签名验证. ps: JWT(json web token)是设计一种简洁,安全,无状态的token的实现,通常用于网络请求方和网络接收方 ...

  3. 关于 JWT、JWS、JWE

    JWT(JSON Web Token) JWT 是一个字符串,表示了一组字段声明的集合,以 JSON 格式组织数据,并以 JWS 或 JWE 方式编码. JWT 由 Header.Payload.Si ...

  4. JWS实现WebService

        WebService估计大家都有听过或者使用过.Java有几种常用的方式实现webservice,本文主要是讨论JWS实现. 什么是webservice     简单而言,webservice ...

  5. java jws web_java 用jws发布一个简单的webservice

    第一步: 定义一个简单webservice接口 package Interface; import javax.jws.WebParam; import javax.jws.WebService; @ ...

  6. JWT,JWE,JWS和RSA2

    JWT,以及与JWS和JWE之间的关系 简而言之,JWT是一种安全规范,主要用于在双方之间传递安全数据.而JWS和JWE是实现安全传输的两种方式,JWS用于对传输报文的签名与验签,JWE用于对敏感数据 ...

  7. Exception in thread main java.lang.Error: 无法解析的编译问题: 方法 main 不能声明为 static;只能在静态类型或顶级类型中才能声明静态方法

    Exception in thread "main" java.lang.Error: 无法解析的编译问题: 方法 main 不能声明为 static:只能在静态类型或顶级类型中才 ...

  8. Rendering Problems Exception raised during rendering:

    问题 : Rendering Problems Exception raised during rendering:×× 问题解决方法: 把Text 切换Design界面 降低api的版本即可 操作如 ...

  9. Java基础(七)--Exception异常处理

    发现错误的理想时机是程序运行之前(编译期),然后不太现实,很多异常无法被发现(特别是业务上的数据),需要在运行时解决. 错误恢复机制保证代码健壮性的方式,异常处理在程序中很常见,也是必须的,必须考虑有 ...

  10. 【MongoDB异常】Exception authenticating MongoCredential解决方法

    我们通过ideal编辑器编辑 springboot时候,出现这个错误: com.mongodb.MongoSecurityException: Exception authenticating Mon ...

最新文章

  1. 从0到1,苏宁API网关的演进之路
  2. 初级程序员常犯错误一览
  3. Java Web技术经验总结(二)
  4. JRE System Library、Referenced Libraries、Web App Libraries的含义
  5. mysql优化器分析器_MySQL查询优化器的概念和原理整个执行过程
  6. 并发执行变成串行_网易Java研发面试官眼中的Java并发——安全性、活跃性、性能...
  7. iris流程图_GitHub - LeoIris/vue: vue源码逐行注释分析+40多m的vue源码程序流程图思维导图 (diff部分待后续更新)...
  8. 微信小程序踩坑- tabBar.list[3].selectedIconPath 大小超过 40kb
  9. 翻翻git之---炫酷的自己定义翻滚View TagCloudView
  10. Linux搭建测试环境详细步骤
  11. [No000030]程序员节发点别的:中国教育整个把人脑子搞坏了-易中天
  12. 怎样搭建serveru ftp个人服务器
  13. 又现信息泄露事 融云通讯安全守护之道
  14. OpenLayer学习之style样式的学习笔记
  15. 改变 el-dialog 的宽度
  16. 9、刷牛客网SQL题(三)
  17. 基于EasyDarwin云视频平台的幼儿园视频直播(手机直播/微信直播)解决方案
  18. 编译原理三大圣书——龙书、虎书、鲸书
  19. matplotlib.pyplot.imshow opencv.imread 图片显示 图片读取
  20. 线段树的建树 单点修改 区间查询

热门文章

  1. 这些年,微信产品经理做过的无奈妥协。
  2. oracle rebuild online,rebuild online 请慎用
  3. 计算机无法关闭密码保护共享,xp系统怎么关闭密码保护共享
  4. Not creating XLA devices, tf_xla_enable_xla_devices not set错误求助
  5. kd树 python实现_Python - KDTree 实现
  6. 使用Navicat导入.sql文件(适合新手)
  7. matlab 行 读取文件 跳过_MATLAB对于文本文件(txt)数据读取的技巧总结(经典中的经典)...
  8. ThinkPad E450 进入dos界面快捷键 按F1
  9. 多元有序logistic回归分析_多元Logistic_回归分析解析.ppt
  10. idea设置黑色经典样式Darcula