我需要在密钥库中添加生成的SSL证书后刷新/重新启动Tomcat。我正在使用Java REST调用来添加证书。以编程方式刷新/重新启动当前Tomcat实例
store.setKeyEntry("tomcat", keyPair.getPrivate(),
"password".toCharArray(), certs);
刷新/重新启动应该发生在同一个REST调用中。
我该如何做到这一点?
我需要在密钥库中添加生成的SSL证书后刷新/重新启动Tomcat。我正在使用Java REST调用来添加证书。以编程方式刷新/重新启动当前Tomcat实例
store.setKeyEntry("tomcat", keyPair.getPrivate(),
"password".toCharArray(), certs);
刷新/重新启动应该发生在同一个REST调用中。
我该如何做到这一点?
我现在可以重新启动。我用批处理文件重新启动服务器。但重新启动后,如果我再次尝试任何REST调用它将被吊死。它会在10-15分钟后工作。代码段
公共无效的run(){
try {
Thread.sleep(3000); // wait for response return
String path = SERVER_RESTART_SCRIPT;
Runtime rn = Runtime.getRuntime();
Process proc = rn.exec(path);
proc.waitFor();
System.exit(0);
} catch (IOException e) {
logger.error("IO exception: " + e);
} catch (InterruptedException e) {
logger.error("InterruptedException: " + e);
}
}
这是一个高级别的安全问题!你不能/不应该用REST调用重启你的服务器!这会给你的客户一个非常简单的方法来在你的数据中心生成DOS拒绝服务攻击,可能会限制其他服务!
如果你需要管理下级关系到你的资产,然后是软件/硬件服务,你不应该使用你的应用程序级的服务和协议,但你应该实行低层次的管理协议,该协议是安全基础架构的一部分!
要在你的情况更具体的我就如使用虚拟环境VMWare以及相关协议和调用来设置/重置凭证以及动态启动/重新启动服务器! VMWare虚拟服务很有可能还有一些上层应用程序,它们具有REST服务,您仍然可以使用来自客户端的SSL握手和所有相关安全句柄来调用HTTP REST来启动这些服务!
我同意关于安全漏洞的Gabor。我不知道你的用例,但如果你确实需要实现它,那么你需要创建一个简单的tomcat重启脚本并在添加证书后执行它。 该解决方案在下面的帖子中描述:how to restart tomcat from a running webapp?
我会建议你使用Apache Commons Exec
希望有所帮助。
现在感谢我能够重新启动。我用脚本来重新启动服务器。但重新启动后,如果我再次尝试任何REST调用它将被吊死。它会在10-15分钟后工作 – Manjunath
您好,感谢现在我能够重新启动。我用脚本来重新启动服务器。但重新启动后,如果我再次尝试任何REST调用它将被吊死。它会在10-15分钟后工作。 – Manjunath