服务器自签名证书过期可以,Tomcat服务器和HTTP客户端接受过期的自签名证书

我正在编写一个具有相互身份验证的rest客户端和服务器 . 客户端上的密钥库充当密钥库和信任库 . 服务器端的密钥库充当密钥库和信任库 .

服务器是由Spring启动的嵌入式Tomcat服务器 .

我正在编写两个测试,其中一个测试验证服务器拒绝具有过期证书的客户端连接,另一个验证客户端未连接到具有过期证书的服务器 .

我有一个使用java keytool创建的信任库和密钥库 . 它们每个都包含相应的自签名证书和相关密钥 .

Test 1

客户端具有与过期证书关联的过期密钥(在客户端密钥库中)(在服务器的密钥库中) .

当我的客户端向服务器发出请求时,服务器成功处理请求而不是拒绝请求 . 服务器应拒绝该请求 .

我正在使用这些属性来配置tomcat的信任存储 . 我错过了什么吗?

server.ssl.trust-store={truststore location}

server.ssl.trust-store-password={password}

server.ssl.trust-alias={trust alias}

server.ssl.client_auth=NEED

Test 2

服务器具有与过期证书关联的过期密钥(在服务器密钥库中)(在客户端的密钥库中) .

当我的客户端(Apache HTTP Client)向服务器发出请求时,请求成功 . 这是错误的行为 . 我的修复是为SSL上下文创建一个新的TrustStrategy来解决问题 .

return new TrustStrategy() {

/**

* Checks to see if certificate has not expired yet.

*

* Always returns false so the trust manager is consulted.

*/

@Override

public boolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException

{

for (X509Certificate certificate : chain)

{

certificate.checkValidity();

}

return false;

}

};

默认行为不应该是拒绝过期的证书吗?什么是嵌入式Tomcat上的证书信任管理器,如何修改它以拒绝过期的证书?

谢谢!

使用spring-boot 1.4.0,嵌入式tomcat 7.0.70,Apache HTTP Client 4.3.6

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值