2015-09-28 386 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