Jetty server端如何在创建mTLS链接时获得client证书认证的结果

本文介绍了在Jetty服务器端实现mTLS(mutual TLS)以验证客户端身份的需求。通过加载keystore和truststore,设置需客户端认证,并使用SSLHandshakeListener监听器获取验证结果。当默认方法在验证失败时无法获取证书信息时,通过自定义SSLContext和TrustManager来确保在认证成功或失败时都能捕获客户端证书。
摘要由CSDN通过智能技术生成

Requirement

Client端在发送请求时,没有做user的authentication,显然这样不符合安全要求。结合客户端的特点-是设备自动发送,所以提出要用mTLS去验证客户端的身份信息来达到对客户的验证。

目前Server端里边起了一个embedded jetty server, 并且在client端在连接时会要求验证client的证书,并且要求把验证的结果以log形式存起来,包括证书的DN信息。

Analysis

证书方面,服务器端jetty要加载keystore.jks,里边包括server端的private key,还要加载truststore.jks,里边包括认证client证书的CA证书,如果是由intermediate CA认证的话,那么所有CA chain 都要包括在truststore里,还有client的证书。客户端在请求的时候要带上自己的私钥公钥,这取决于client端访问的形式。

jetty方面,在生成Connector的时候要加载keystore, truststore,还要setNeedClientAuth为true才能去触发对client证书的验证。还有就是要获取client证书验证的结果,有一个listener的接口,在验证结束后会把结果notify的这类的是实现上。

下面是jetty server的代码例子,在connector上加了一个SSLHandshakeListener的实现。

Server server = new Server();

// === Configure SSL KeyStore, TrustStore, and Ciphers ===
SslContextFactory
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值