ssl - 嵌入式 Tomcat - 无需重新启动即可更新/删除证书
问题描述
我正在使用嵌入式 Tomcat 并SSLHostConfig
在创建连接器时添加 SNI 证书。它工作得很好。
我还可以添加证书而无需使用以下方式重新启动 Tomcat:
SSLHostConfig sslHostConfig = new SSLHostConfig();
sslHostConfig2.setHostName(host);
sslHostConfig2.setCertificateFile(path);
connector.addSslHostConfig(sslHostConfig);
这也很完美。
此外,无需重新启动 Tomcat,我可以使用以下命令获取所有现有SSLHostConfig
实例的列表:
SSLHostConfig[] sslHostConfigs = connector.findSslHostConfigs();
但是,我不知道如何更新或删除现有SSLHostConfig
实例。在数组中将其设置为 null 不起作用。此外,用新SSLHostConfig
实例替换数组中的它也不起作用。
有没有办法在SSLHostConfig
不重新启动 Tomcat 的情况下删除或修改实例?
谢谢。
解决方案
要使用新的证书文件(最初创建它时引用)更新 SSLHostConfig,可以这样做:
Http11NioProtocol protocol (Http11NioProtocol)connector.getProtocolHandler();
protocol.reloadSslHostConfig(host);
当然,这假设您使用 Http11NioProtocol 作为连接器的协议处理程序。
推荐阅读
- android - 减少 gradle 脚本中的重复
- python - 在机器之间加载 Pickle 文件的不一致
- react-native - Redux 操作在 React Native 中重定向
- javascript - 将 PHP 常量 \_\_NAMESPACE__ 转移到 Javascript
- python - 如何打开签出的文件 P4 Python
- postgresql - PostgresSQL中数字之间的平均数量
- php - 我无法访问我的 wordpress 插件的自定义模板中的帖子
- c - 如何保存当前日期以用于将来的记录?
- python - 我需要一种在基于 django 函数的列表视图中传递唯一对象 ID 的方法
- doxygen - 在 doxygen 输出中同时包含 #ifdef 和 #else 代码