Netty中的双向SSL身份验证

Sha*_*hne 3 java ssl netty

我正在开发一个基于服务器和客户端的应用程序,它需要双向SSL身份验证.(客户端使用SSL证书对服务器和服务器验证客户端进行身份验证.)

我对Netty很陌生,对此毫无疑问.

  1. 使用Netty可以进行双向身份验证吗?
  2. 通过向服务器和客户端的管道事件添加另一个SslHandler,可以简单地实现吗?
  3. 如果以上情况属实,我如何在ChannelConnected()方法中获取所需的SslHandler来执行SslHandshake?是否可以通过再次调用管道来调用ChannelConected()方法的第二次握手?
  4. 有没有我可以参考的例子?

我非常感谢任何有关这方面的帮助,答案或推动正确的方向.

提前致谢.

Vee*_*ebs 11

使用Netty可以进行双向身份验证吗?

通过向服务器和客户端的管道事件添加另一个SslHandler,可以简单地实现吗?

如果以上情况属实,我如何在ChannelConnected()方法中获取所需的SslHandler来执行SslHandshake?

在创建时,您需要正确设置密钥库和信任库SSLContext.

是否可以通过再次调用管道来调用ChannelConected()方法的第二次握手?

从内存中,客户端和服务器身份验证在第一次握手中完成.

在客户端上,在密钥库中安装客户端的私钥,在信任库中安装服务器的公钥.

在服务器上,将服务器的私钥安装在密钥库中,将客户端的公钥安装在信任库中.

有没有我可以参考的例子?

  • 这是我为websockets做的一个例子.它只显示如何设置服务器密钥库.您必须添加信任库作为第二个参数serverContext.init(kmf.getKeyManagers(), null, null);

  • 这是Scala中使用信任存储设置的类似示例.

  • 这是一个很好的java指南,介绍如何设置SSLContext.

希望这可以帮助.