AXIS2跳过HTTPS证书验证的几种方式

使用AXIS2作为Client访问WebService 使用AXIS2,可以方便的构建WebService的服务器端,也可以很方便的作为Cilent,来访问别的WebService。 下面根据工作中的经历,整理了一下,作为Cilent访问WebService的要点。 阅读详情

声明:本文转载自:AXIS2跳过HTTPS证书验证的几种方式

为了避免丢失,Copy原文如下:


AXIS2跳过HTTPS证书验证的几种方式
Posted on 2016/03/24 by neohope
AXIS2启用HTTPS,只需要设置truststore及密码,然后对于HTTPS协议,就会自动启用SSL通信了。

System.setProperty("javax.net.ssl.trustStore", PATH_TO_TRUSTSTORE);        
System.setProperty("javax.net.ssl.trustStorePassword", PASSWORD_OF_TRUSTSTORE);
但有时,基于种种原因,比如证书链有问题,比如证书HOST有问题,比如证书本身就有问题,说多了都是泪,这是后就要绕过HTTPS的证书验证了。总起来说,AXIS2有下面几种方式可以跳过HTTPS证书验证:

1、通过设置TrustAllTrustManager来绕过证书验证
这是一种局部设置方式,方式适合用wsdl2java生成stub代码的程序来执行,比如,客户端可以:

SSLContext sslCtx = SSLContext.getInstance("TLS");
sslCtx.init(null, new TrustManager[] {new TrustAllTrustManager()}, null);
stub._getServiceClient().getOptions().setProperty(HTTPConstants.CUSTOM_PROTOCOL_HANDLER,
    new Protocol("https",(ProtocolSocketFactory)new SSLProtocolSocketFactory(sslCtx),443));
2、通过设置CUSTOM_PROTOCOL_HANDLER来绕过证书验证
这是一种全局设置的方式。

Protocol myProtocolHandler = new Protocol("https", new NeoSecureSocketFactory(), 443);
//中心端注册CUSTOM_PROTOCOL_HANDLER
messageContext.getOptions().setProperty(HTTPConstants.CUSTOM_PROTOCOL_HANDLER, myProtocolHandler);
//客户端注册CUSTOM_PROTOCOL_HANDLER
stub._getServiceClient().getOptions().setProperty(HTTPConstants.CUSTOM_PROTOCOL_HANDLER, myProtocolHandler); 
3、注册Protocol来绕过证书验证
这是一种全局设置的方式。

Protocol.registerProtocol("https", new Protocol("https", new NeoSecureSocketFactory(), 443)); 
4、最后是NeoSecureSocketFactory.java

package com.neohope.axis2test;

import javax.net.ssl.*;
import java.io.*;
import java.net.*;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.X509Certificate;
import javax.net.SocketFactory;
import org.apache.commons.httpclient.ConnectTimeoutException;
import org.apache.commons.httpclient.params.HttpConnectionParams;
import org.apache.commons.httpclient.protocol.ProtocolSocketFactory;

/**
 *
 * @author Hansen
 */
public class NeoSecureSocketFactory implements ProtocolSocketFactory {
    
    private static SSLContext ssl = null;  
    
    private static TrustManager[ ] getTrustManagers() {
        TrustManager[ ] certs = new TrustManager[ ] {
                new X509TrustManager() {
                    public X509Certificate[ ] getAcceptedIssuers() { return null; }
                    public void checkClientTrusted(X509Certificate[ ] certs, String t) { }
                    public void checkServerTrusted(X509Certificate[ ] certs, String t) { }
                }
        };
        return certs;
    }
    
    private static SSLContext createSSLContext() {  
        try {  
            TrustManager[] trustManagers = getTrustManagers();  
            SSLContext sslContext = SSLContext.getInstance("TLS");  
            sslContext.init(null, trustManagers, null);  
  
            return sslContext;  
        } catch (KeyManagementException e) {  
            ; 
        } catch (NoSuchAlgorithmException e) { 
            ;
        }
        return null;  
    }  
  
    private static SSLContext getSSLContext() {  
        if (ssl == null) {  
            ssl = createSSLContext();  
        }  
        return ssl;  
    }  

    @Override
    public Socket createSocket(String host, int port, InetAddress clientHost, int clientPort) throws IOException, UnknownHostException {
        return getSSLContext().getSocketFactory().createSocket(host, port,  
                clientHost, clientPort); 
    }

    @Override
    public Socket createSocket(String host, int port, InetAddress clientHost, int clientPort, HttpConnectionParams params) throws IOException, UnknownHostException, ConnectTimeoutException {
        if (params == null) {  
            throw new IllegalArgumentException("Parameters may not be null");  
        }  
        int timeout = params.getConnectionTimeout();  
        SocketFactory socketfactory = getSSLContext().getSocketFactory();  
        if (timeout == 0) {  
            return socketfactory.createSocket(host, port, clientHost,  
                    clientPort);  
        }  
  
        Socket socket = socketfactory.createSocket();  
        SocketAddress localaddr = new InetSocketAddress(clientHost, clientPort);  
        SocketAddress remoteaddr = new InetSocketAddress(host, port);  
        socket.bind(localaddr);  
        try {  
            socket.connect(remoteaddr, timeout);  
        } catch (Exception e) {  
            throw new ConnectTimeoutException(e.getMessage(), e);  
        }  
  
        return socket;  
    }

    @Override
    public Socket createSocket(String host, int port) throws IOException, UnknownHostException {
         return getSSLContext().getSocketFactory().createSocket(host, port); 
    }
}

黑猫带你学UFS协议第17篇:UFS安全模式详解(Secure Mode) 本文详细介绍了UFS协议中的安全模式,包括Erase, Discard, Purge和Wipe Device操作。Erase用于永久删除数据并确保无法恢复;Discard不保证数据清除;Purge类似于Sanitize,清除内部未映射的物理块数据;Wipe Device则是格式化设备。这些操作涉及逻辑单元、擦除单位、相关寄存器配置等,确保数据安全。" 126036669,12409270,MySQL 8.0 开窗函数详解,"['数据库理论', 'SQL'] 阅读详情

相关推荐

FC游戏Hack实战:从零开始修改游戏数据

本文以《忍者神龟3》为例,详细介绍了从零开始进行FC游戏Hack的完整实战流程。通过使用FCEUX模拟器和调试器,结合“递减法”精准定位生命值内存地址,并利用十六进制编辑器修改关键指令,最终实现“无限生命”效果。文章旨在引导读者理解游戏数据修改的核心原理与操作技巧,重温经典的同时深入计算机程序运行机制。

weixin_28366353的博客 359

笔记- webservice axis绕过https证书验证

log.info("付款加载证书 完成,开始发送 url=" + serverUrl); // 发送 // System.setProperty("javax.net.ssl.keyStore",PAYMONEY_KEYSTORE_URL); // System.setProperty("javax.net.ssl.keyStorePassword",PAYM...

zongx的博客 2278

手把手教你用mitmproxy抓包抖音数据流(附Python脚本模板)

本文详细介绍了如何使用mitmproxy抓包抖音数据流,包括环境搭建、证书安装和Python脚本模板。从mitmproxy配置到抖音API解析,提供完整的移动端数据流分析方案,帮助开发者快速掌握数据抓取技术,适用于应用优化、竞品分析和安全审计等场景。

weixin_33670786的博客 309

WebService的axis调用方式跳过https验证

webservice是基于http的soap协议传输数据,当我们访问以https开头的webservice接口时,会报以下错误: AxisFault faultCode: {。。。。。}Server.userException faultSubcode: faultString: javax.net.ssl.SSLHandshakeException: sun.security.valid...

lqbz456的博客 3581

卸载Office 16 Click-to-Run Extensibility Component详细步骤

卸载Office 16 Click-to-Run Extensibility Component详细步骤 第一步:按住键盘上的“Win+R”,打开运行窗口 在运行窗口输入“Installer”回车,打开Installer文件夹 第二步:在Installer文件夹红框最右侧,即“大小”后面,右击选择“其他”,找到“主题”,勾选,点击“确定”,添加主题列成功 第三步:在“主题”列找到“Office 16 Click-to-Run Extensibility Component

M_try的博客 3万+

SPWM波调制度原理

SPWM波调制度原理

qq_43557686的博客 1万+

Java对Axis2 WebService 的HTTPS发布和调用

近期公司把原有的一个HTTP的Axis2 WebService改为HTTPS,经过网上一番参考和研究整理如下。 发布https的项目大家应该清楚,不清楚的看这篇文章https://www.cnblogs.com/wanghaoyuhappy/p/5267702.html 接下来是发布HTTPS的web service。 axis2如果需要进行https访问,需要加入全局配置文件axis2.x...

HelloMy_World的博客 4292

四足机器人如何用对抗运动先验(AMP)实现复杂地形行走?Unitree Go1实战解析

本文深入解析了四足机器人Unitree Go1如何通过对抗运动先验(AMP)算法实现复杂地形行走。AMP结合模仿学习与对抗训练,使机器人仅凭本体感知就能适应未知地形。文章详细介绍了AMP的核心架构、仿真训练工程实践以及在Unitree Go1上的部署优化方案,展示了其在极端地形下的卓越性能表现。

weixin_29050513的博客 330

java.security.cert.CertificateException: No subject alternative DNS name matching XXX found解决方案

由于第三方服务商更新服务器证书,导致向其推送数据出现SSL证书认证失败。 网上搜了一堆,都无法生效,最终找到了一个完美解决方案: 在代码层跳出SSL验证 1、观察异常日志信息如下: 2、新增跳过证书的类,TrustAllTrustManager.java,代码如下: public class TrustAllTrustManager implements javax.net.ssl.TrustManager, javax.net.ssl.X509TrustManager { @Override

jike11231的博客 2万+

《LabVIEW ZYNQ实战指南》第6章>>案例解析:基于USB WiFi模块的ZYNQ无线通信部署与Linux RT开发

本文详细解析了如何为ZYNQ开发板部署USB WiFi模块,实现无线通信。通过LabVIEW Linux RT环境,利用封装好的驱动VI,开发者可轻松配置ZYNQ连接无线网络,摆脱网线束缚,实现程序无线部署与远程调试,为工业物联网应用奠定基础。

app77的博客 756

S7-1200中通过MODBUS TCP客户端在一次请求中实现从服务器读写一个或多个保持性寄存器的具体方法

S7-1200中通过MODBUS TCP客户端在一次请求中实现从服务器读写一个或多个保持性寄存器的具体方法

Robot_PLC_HMI_Automation 4226

axis2实现HTTPs双向认证的几种方式

1、  重写transport Sender类并重定义axis2的配置文件。 参考http://www.cnblogs.com/SoYoung/archive/2012/04/08/Custom_SSL_in_Axis2.html   主要目的是需要实现一个SSLcontext(注:主要是实现自己的SSLProtocolSocketFactory,在getSSLContext方法里面使用下面

suamt的专栏 4623

Sigrity Power DC Single-BoardPackage IR Drop Analysis模式进行单板压降仿真分析操作指导

如果需要单独对某个via设置参数,右侧选择Setup by padstack,下方下拉选择某个via,单独设置参数即可。举例:板厚1.6mm,内层1OZ(1.2mil,即0.03mm),铜皮宽度1mm,20度温升,允许通流I为2.5A。目的是模拟实际情况,via的孔壁电镀1mil,中间是空心的,让via不完全被填充金属成为实心via。Upper/lower Tolerance:上下公差,设置为5%,也就是压降允许的范围。电流密度计算公式:J=I/A(J为电流密度,I为电流,A为横截面积)

weixin_54787054的博客 699

WebService系列之Axis Https(SSL)证书校验错误处理方法

WebService系列之Axis Https(SSL)证书校验错误处理方法,最近在用Axis调用https的接口,抛出异常:javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid ce

Nicky's blog 4167

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Tomcat6 配置HTTPS SSL 发布Axis2 webservice配置

1.首先使用java 自带的keytools生成我们所需要的密钥证书。   为了方便起见这里使用bat文件生成,关于keytools的具体使用大家可查看相关文档 set SERVER_DN="CN=127.0.0.1, OU=SPH, O=SPH, L=sh, S=sh, C=CN" set CLIENT_DN="CN=Client, OU=SPH, O=SPH, L=sh, S=sh,

swq的专栏 5928

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Axis 1 https(SSL) client 证书验证错误ValidatorException workaround

Axis 1.x 编写的client在测试https的webservice的时候, 由于client 代码建立SSL连接的时候没有对truststore进行设置,在与https部署的webservice 连接会在运行时报出: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: ...

246

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

java 调用axis2 ssl,axis2调用webservice https接口报:PKIX path building failed 解决方案

一套很老的axis2调用webservice的https接口报,如下错误:分析:这是由于客户端证书校验失败的提示,那么如何避免证书的校验呢,这里我们采用了信任所有证书来避免校验,进而正常调用webservice的https接口。org.apache.axis2.AxisFault: sun.security.validator.ValidatorException: PKIX path build...

weixin_28997879的博客 1045

webservice axis绕过https证书验证及NONEwithRSA Signature not available问题解决

webservice axis绕过https证书验证: public String callWebservice(){ String urlprint = "your url"; String returnCode=null; try { //在方法中添加这一句代码即可 AxisProperties.setProperty("axis.socketSecureFactory", "org.apache.axis.components.net.SunFakeTrustSocketFact

qq_36484670的博客 1601

webService用axis1.x绕过https证书校验的代码

转自 http://www.cnblogs.com/zhukunrong/p/3791409.html?utm_source=tuicool&utm_medium=referral

力口月巴犭苗的博客 5182

axis1.0+带证书验证方式访问webservice的问题

java  使用axis调用第三方发布的需要证书验证的webservice接口: 一、首先我们先保证在浏览器下可以正常访问此webs                    A:利用第三方提供的*.p12文件,把此证书导入到浏览器中,导入方法不在说,网上很多。导入以后,浏览器应该就可以直接访问此webs。 二、接下来在客户端开发的时候,程序里面怎么调用:               

fsp88927的专栏 2597

【网页访问单向、双向验证均可以】https原理及tomcat配置https方法[生成CA根证书配置tomcat后,若要成功访问axis中的webservice,需要配置它对应的axis2.xml文件]

文章来源:

Thinking 1917

Tomcat6 配置HTTPS SSL 发布Axis2 webservice(一)

1.首先使用java 自带的keytools生成我们所需要的密钥证书。   为了方便起见这里使用bat文件生成,关于keytools的具体使用大家可查看相关文档 set SERVER_DN="CN=127.0.0.1, OU=SPH, O=SPH, L=sh, S=sh, C=CN" set CLIENT_DN="CN=Client, OU=SPH, O=SPH, L=sh, S

oemoon的专栏 929

java 调用 https wsdl_在Axis2 Runtime中使用java从HTTPS wsdl生成webservice客户端

路径1:从命令提示符wsimport -d C:\ Users \ A550857 \ Desktop \ Jay -extension -keep -p com.gatewayedi.ws -XadditionalHeaders Paste_WSDL_Below命令提示符响应:解析WSDL ...[错误] sun.security.validator.ValidatorException:PKI...

weixin_39831001的博客 477

axis2调用webservice https接口报:PKIX path building failed 解决方案

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33717298的博客 903

通过双向证书认证使用 gSOAP 访问 web services

概述 本文通过一系列的实验步骤描述,向您展示如何使用 gSOAP 编写的客户端,通过双向证书认证,访问由 tomcat7 和 Axis2 搭建的 web 服务。全文循序渐进,分为几个阶段逐步展开,每个阶段相关的注意事项和遇到过的一些问题也一并记录下来供读者参考。 先简单介绍一下需要准备的工具。 服务端:由 tomcat7+axis2 搭建而成 客户端:由 gSOAP 工具生成 证书 :用...

PeterCuiy 793
上一篇: Cxf和Axis使用https进行通信的笔记示例
下一篇: POM中引入CXF后maven-shade-plugin打包示例
lhever_
博客等级 码龄14年 213粉丝 130原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值