java 访问url是https协议的soap接口 webservcie编程方式 附源码示例

公司最近有个接口改造需求,要将http请求改成https请求,我用的是绕过验证数字证书的方法,网上有很多,但我老版代码采用的是webservice编程,一直没有合适的,后来研究了一下,总结如下,亲测有效

1. 需要自定义一个配置类SoapHTTPConduitConfigurer


@Configuration
public class SoapHTTPConduitConfigurer implements HTTPConduitConfigurer {

    @Override
    public void configure(String name, String address, HTTPConduit c) {
        try{
            HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
            c.setClient(httpClientPolicy);
            SSLContext context = createIgnoreVerifySSL();
            TLSClientParameters params = c.getTlsClientParameters();
            if (params == null) {
                params = new TLSClientParameters();
            }

            params.setSslContext(context);
            params.setSSLSocketFactory(context.getSocketFactory());
            params.setHostnameVerifier((s, sslSession) -> true);
            c.setTlsClientParameters(params);
        }catch(Exception e){
            e.printStackTrace();
        }


    }

    public static SSLContext createIgnoreVerifySSL() throws NoSuchAlgorithmException, KeyManagementException {
        SSLContext sc = SSLContext.getInstance("TLS");

        // 实现一个X509TrustManager接口,用于绕过验证,不用修改里面的方法
        X509TrustManager trustManager = new X509TrustManager() {
            @Override
            public void checkClientTrusted(
                    java.security.cert.X509Certificate[] paramArrayOfX509Certificate,
                    String paramString) throws CertificateException {
            }

            @Override
            public void checkServerTrusted(
                    java.security.cert.X509Certificate[] paramArrayOfX509Certificate,
                    String paramString) throws CertificateException {
            }

            @Override
            public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                return null;
            }
        };

        sc.init(null, new TrustManager[]{trustManager}, null);
        return sc;
    }
}

其他的啥也不用干,部署测试,能够正常访问https路径

当我们绕过证书时,就意味着不再对服务器的数字证书进行验证,无论其是否是由受信任的证书颁发机构(CA)签发的。这样做可能会带来一些安全风险,因为我们无法确保建立的连接是安全的,并且无法验证服务器的身份。
绕过证书通常只应在开发和测试环境中使用,不建议在生产环境中使用
!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值