2015-09-28 127 views
1

我需要在密钥库中添加生成的SSL证书后刷新/重新启动Tomcat。我正在使用Java REST调用来添加证书。以编程方式刷新/重新启动当前Tomcat实例

store.setKeyEntry("tomcat", keyPair.getPrivate(), 
        "password".toCharArray(), certs); 

刷新/重新启动应该发生在同一个REST调用中。

我该如何做到这一点?

回答

0

我现在可以重新启动。我用批处理文件重新启动服务器。但重新启动后,如果我再次尝试任何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); 
    } 

} 
1

这是一个高级别的安全问题!你不能/不应该用REST调用重启你的服务器!这会给你的客户一个非常简单的方法来在你的数据中心生成DOS拒绝服务攻击,可能会限制其他服务!

如果你需要管理下级关系到你的资产,然后是软件/硬件服务,你不应该使用你的应用程序级的服务和协议,但你应该实行低层次的管理协议,该协议是安全基础架构的一部分!

要在你的情况更具体的我就如使用虚拟环境VMWare以及相关协议和调用来设置/重置凭证以及动态启动/重新启动服务器! VMWare虚拟服务很有可能还有一些上层应用程序,它们具有REST服务,您仍然可以使用来自客户端的SSL握手和所有相关安全句柄来调用HTTP REST来启动这些服务!

+0

您好,感谢现在我能够重新启动。我用脚本来重新启动服务器。但重新启动后,如果我再次尝试任何REST调用它将被吊死。它会在10-15分钟后工作。 – Manjunath

0

我同意关于安全漏洞的Gabor。我不知道你的用例,但如果你确实需要实现它,那么你需要创建一个简单的tomcat重启脚本并在添加证书后执行它。 该解决方案在下面的帖子中描述:how to restart tomcat from a running webapp?

我会建议你使用Apache Commons Exec

希望有所帮助。

+0

现在感谢我能够重新启动。我用脚本来重新启动服务器。但重新启动后,如果我再次尝试任何REST调用它将被吊死。它会在10-15分钟后工作 – Manjunath