当前位置: 首页 > 知识库问答 >
问题:

Netty中的双向SSL身份验证

岑畅
2023-03-14

我正在开发一个基于服务器和客户端的应用程序,它需要双向SSL认证。(客户端验证服务器,服务器验证客户端,两者都使用SSL证书。)

我对Netty很陌生,对此几乎没有疑问。

    < li >使用Netty可以进行双向认证吗? < li >通过在服务器和客户端的pipelinefactories中添加另一个SslHandler可以简单地实现吗? < li >如果上述情况属实,我如何在ChannelConnected()方法中获取所需的SslHandler来进行SslHandshake?是否有可能通过再次回调管道来调用ChannelConected()方法处的第二次握手? < li >关于这一点,有没有我可以参考的例子?

我真的很感谢在这方面的任何帮助,答案或推动正确的方向。

共有3个答案

濮金鑫
2023-03-14

SSL是一种表示层协议,SSL握手发生在套接字连接建立之后和应用层获得可用套接字连接之前。无论您使用什么应用程序,如果您有SSL协议层,那么您都可以通过SSL工作。

正如@EJP在上面提到的,双向认证只是一个配置问题。如果双方都能建立并验证彼此的信任链,那么握手就成功了。请参考netty配置手册来配置SSL信任库。

盖成弘
2023-03-14

双向身份验证要求服务器和客户端都拥有对方信任的证书。客户端需要生成一个私钥,将其存储在他的密钥库中,并让服务器信任库信任的人对其进行签名。

这不仅仅是你写什么代码的问题。

魏宏邈
2023-03-14

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

通过向服务器和客户机的pipelinefactories添加另一个SslHandler可以简单地实现吗?

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

在创建 SSL 上下文时,您需要正确设置密钥库和信任库。

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

从内存来看,客户端和服务器身份验证在第一次握手时完成。

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

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

关于这一点,有什么我可以参考的例子吗?

>

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

    这是Scala中具有信任存储设置的类似示例。

    这是一个关于如何设置SSLContext的很好的java指南。

    希望这能有所帮助。

  •  类似资料:
    • 我已经在Netty中尝试了双向SSL身份验证 但这个例子不再显示任何信息,只是一个404未找到。我在这里找到了一些帮助: https://github.com/code4craft/netty-learning/blob/master/netty-3.7/src/main/java/org/jboss/netty/example/securechat/SecureChatSslContextFac

    • 我试图设置2方式ssl身份验证。我的要求是经纪人应该只认证特定的客户。 我的组织有一个CA,它发行pkcs12格式的所有证书。我遵循的步骤如下。 获取代理的证书,并在代理密钥库中配置它 当我运行代理和客户端时,我希望代理验证客户端并建立ssl连接。但是下面的错误被抛出。 当我用只包含CA证书的信任存储文件替换 /etc/pki/java/cacerts代理信任存储时,它工作得很好。但是它将验证任何

    • OkHttp:2.0.0-RC1,改装:1.5.1。 我正在创建okHttp客户端,如这里所述:如果我使用okhttp 2.0和最新的改造,NoSuchmetodError?并设置我自己的,并像这样初始化 当我尝试建立双向身份验证SSL连接时,每次应用程序崩溃时都会出现以下日志: 我在这里看到了关于这个问题的讨论:https://github.com/square/okhttp/issues/18

    • 我无法使Apache CXF客户端grails插件与双向SSL身份验证一起工作。我调用的web服务提供了一个开发环境URL,它不需要双向身份验证,而且一切正常。然而,他们提供的测试环境URL确实需要双向身份验证,我无法使其正常工作。 grails应用程序在Windows服务器上的Tomcat中运行。 我编写了一个独立的Java测试应用程序来测试双向身份验证。我用适当的密钥库、信任库等来调用它,它工

    • 想得到一些关于设置简单的双向ApacheSSL的建议。 我们使用openSSL创建了一个密钥文件和csr请求。然后,我们将其提交给CA,并收到一个crt文件与CA的crt文件一起返回。 我们已经配置了ApacheHTTP。conf文件,并在加载mod_ssl模块后添加了以下参数。 开启SSLEngine SSLCACertificateFile/local/fast/fcHome/deployme

    • 我正在尝试为相互身份验证设置ActiveMQ,以便客户端需要证书才能将消息传递给代理。我在代理上创建了一个密钥库和一个信任库,并导出了一个复制到客户端的证书。在客户端,我也做了同样的事情,尽管我使用的是NMS,所以我只使用导出的证书,我将其添加到代理的信任库中。我还将证书添加到另一个本地计算机可信根证书中。 代理的配置如下: ${activemq.base}/conf/login.config $