HTTPS解决异常Certificates does not conform to algorithm constraints

原因

在进行SSL握手时,所采用的证书算法不符合约束条件。

 

方案一

$JAVA_HOME/jre/lib/security/java.security
把其中的配置项:
#jdk.certpath.disabledAlgorithms=MD2, MD5, RSA keySize < 1024, \ DSA keySize < 1024, EC keySize < 224
改成:
jdk.certpath.disabledAlgorithms=,
或者直接注释掉:
#jdk.certpath.disabledAlgorithms=MD2, MD5, RSA keySize < 1024, \ DSA keySize < 1024, EC keySize < 224

 

方案二

将自己实现的TrustAnyTrustManager改为继承自行的抽象类X509ExtendedTrustManager。

private static class TrustAnyTrustManager extends X509ExtendedTrustManager {
    //...
    //这里省略了一些必须要实现的用于验证证书的方法,在这里都是空方法
    //...	
}

如果TrustAnyTrustManager是实现接口X509TrustManager,而不是继承抽象类:X509ExtendedTrustManager,那么JDK则会默认用自己的实现类AbstractTrustManagerWrapper来对服务器的证书算法进行验证,检查她们是否符合java.security里的配置要求!而如果我们的TrustAnyTrustManager继承了抽象类:X509ExtendedTrustManager,则SSLContextImpl就会使用我们自己的TrustAnyTrustManager来验证证书算法,而我们这个类所有的验证方法都是空方法(也就是不验证),那么自然也就不会抛异常了。

转载于:https://my.oschina.net/u/2448699/blog/3071038

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>