访问https地址时出现异常:java.security.cert.CertificateException: No subject alternative names present

前几天在工作中碰到一个问题,我们通过回调接口的形式向对接方返回数据,在工程中使用的HttpClient是Spring自带的RestTemplate。但是有一家给到的回调地址为https://ip地址+uri的形式,在进行回调时抛出了如题异常,我理解为是目标地址没有安全证书导致的。查阅一些资料后知道,原来https访问的时候是需要域名才可以的,无法使用ip。这跟前面的没有安全证书又有什么联系呢?其实,认证服务器使用ip的话。,会出现很多问题,所以不可以使用ip进行证书配置,只能使用域名。所以,使用ip地址的形式自然就没有证书了。

但是,对方表示目前他们提供的是测试地址,先进行测试使用,生产环境再提供域名地址。那么,我就需要想办法去使用ip地址形式的url地址。解决方法很简单,既然抛出异常的原因是请求时没有证书,那么就想办法在请求时忽略掉证书就可以了。通过查阅一些资料,我在工程中使用了如下的方法:

首先,定义一个HttpClientUtils.java类,理解为用来生成RestTemplate的模板,具体内容如下:其中设置了信任所有的证书,并且不会对域名进行检查之类的开放性措施。

public class HttpClientUtils {

    public static CloseableHttpClient acceptsUntrustedCertsHttpClient() throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值