HTTPS协议下两种接受自定义Server Certificates的方式

本文介绍了在使用HTTPS协议时,如何处理自定义Server Certificates的问题。针对Java的HttpURLConnection和使用Apache HttpClient(如Rest-Assured)的情况,提供了两种不同的解决方案。对于HttpURLConnection,直接配置信任所有证书;而对于Apache HttpClient,通过自定义SSLSocketFactory并配置Rest-Assured使用该实例来接受自定义证书。
摘要由CSDN通过智能技术生成

今天在使用Rest-Assured测试登录相关的功能,中间涉及到了HTTPS协议,当然,测试环境中的Certificate是自己定义的,还有一个是已经过期的!使用Rest-Assured访问的时候提示证书过期等各种问题。

花了点时间研究了一下,当然没有研究透彻,只是让它可以工作,留待后面专门研究HTTPS的整个连接创建流程后再补充完整吧。

这里说的两种方式,主要看客户端,如果只是用Java自带的HttpURLConnection等与HTTPS协议的server交互,则可以采用下面第一种方式来接受server的Certificates;如果采用的是Apache Http Client或者各种使用Apache Http Client作为底层交互的工具(如Rest-Assured),需要接受Server Certificates时,可以采用第二种方式:

  • 1,客户端采用HttpURLConnection方式:
TrustManager[] trustAllCerts = new TrustManager[]{
  new X509TrustManager() {
    public X509Certificate[] getAcceptedIssuers() {
        return new java.security.cert.X509Certificate[0];
    }

    public void checkClientTrusted(X509Certificate[] certs, String authType) {
        // do nothing
    }

    public void checkServerTrusted(X509Certificate[] certs, String authType) {
        // do nothing
    }
}};

try {
    SSLContext sc = SSLContext.getInstance("TLS");
    sc.init(null, trustAllCerts, new SecureRandom());
    HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
} catch (Exception e) {
    e.printStackTrace();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值