Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何让Netty服务器在更新TLS证书时重新加载该证书?_Java_Ssl_Netty_Aleph - Fatal编程技术网

Java 如何让Netty服务器在更新TLS证书时重新加载该证书?

Java 如何让Netty服务器在更新TLS证书时重新加载该证书?,java,ssl,netty,aleph,Java,Ssl,Netty,Aleph,我有一个基于Netty的服务器,它使用PEM编码的证书文件,定期重新颁发(通过让我们加密)。Netty完全支持加载PEM加密材料,但当稍后重新颁发证书(.cer文件)时,需要重新启动服务器才能看到它 到目前为止,我已经通过添加一个自定义通道init处理程序来处理这个问题,该处理程序添加了重新加载证书的逻辑,并根据该逻辑添加了一个适当的SSLHandler。但现在我想使用Aleph,它希望TLS有一个Netty SSLContext对象 随着Let's Encrypt及其相对较短的证书的日益流行,

我有一个基于Netty的服务器,它使用PEM编码的证书文件,定期重新颁发(通过让我们加密)。Netty完全支持加载PEM加密材料,但当稍后重新颁发证书(.cer文件)时,需要重新启动服务器才能看到它

到目前为止,我已经通过添加一个自定义通道init处理程序来处理这个问题,该处理程序添加了重新加载证书的逻辑,并根据该逻辑添加了一个适当的SSLHandler。但现在我想使用Aleph,它希望TLS有一个Netty SSLContext对象

随着Let's Encrypt及其相对较短的证书的日益流行,这似乎是一个热门和普遍的问题,我想适当地解决它。这意味着创建SSLContext的一种网络兼容方式,如果证书在磁盘上发生更改,它将重新加载证书

我想出了一些方法:

  • 创建一个动态信任管理器/信任存储,然后将其插入Netty SSLContextBuilder。可以使用这一点作为起点,并使用一些代码从中加载密钥/证书(Netty的PEM->KeyStore逻辑在SSLContext类中不是公共的)。优点:也在Netty外面工作。缺点:复杂且不重用Netty的现有逻辑来加载PEM密钥和证书

  • 将此添加为Netty支持的选项


  • 有谁能给我指出一个解决方案,或者建议一个最好的解决方案吗?

    回答我自己的问题


    答案是:不要在这个层次上做。相反,让Netty堆栈之外的东西监视证书,当证书更改时,从管道中删除现有的SSL处理程序,并将其替换为一个新的处理程序,该处理程序使用新证书创建的SSLContext。

    是的,我有这个问题,我相信其他许多问题都有。这是java方面的一个PITA。尽管我找到了返回的方法,它可能允许绕过密钥库。你试过这种方法吗?我尝试实现了完全一样的东西,但没有得到刷新。是的,我在Netty pipeline builder中添加了从缓存位置添加SSL上下文的代码。该位置的上下文将定期更新为来自S3的最新证书。到目前为止一直运作良好。