我想通過在我的java腳本中調用keytool來創建一個自簽名證書。這裏是我的代碼的簡化版本,其中包括我有的問題:在Linux下使用Runtime.getRuntime()。exec()的keytool
public class Tester {
public static void main(String[] args) {
String[] cmd = {
"/bin/sh",
"-c",
"keytool",
"-genkey",
"-dname",
"\"C=US,CN=CU,L=ABC,O=ABC_Univ,OU=ABC_Pro\"",
"-keysize",
"1024",
"-alias",
"testkeypairs",
"-keyalg",
"RSA",
"-sigalg",
"SHA1withRSA",
"-keystore",
"testkeystore",
"-storepass",
"abcdef",
"-keypass",
"abcdef"
}
Process testProc = Runtime.getRuntime().exec(cmd);
}
當我運行它時沒有錯誤。但它沒有給我鑰匙庫。我的問題是:
由密鑰工具生成的證書不被認爲是「子進程的輸出」,它需要被送入使用
getinputstream()
父進程,是嗎?如果是這樣,我也試過
getinputstream()
東西在下面的討論後,
Keytool usage with Runtime.getRuntime().exec() under Linux
程序只是卡住,似乎永遠不會停止。
- 是否有任何其他方式使用java程序創建自簽名證書?
我是Java的新手,英語不是我的第一語言。我希望我明確表達了我的問題。
我不確切知道你在嘗試什麼,但考慮改變你的策略略微:不是調用'exec'來調用keytool二進制文件,而是嘗試以編程方式自己調用Keystore創建代碼。 http://stackoverflow.com/questions/5312559/how-do-i-programmatically-create-a-new-keystore – Gus
我想要的是以編程方式創建一個自簽名證書。我以爲我可以使用Runtime.getRuntime.exec()調用keytool,就像下面的文章中討論的那樣。[http://stackoverflow.com/questions/8308148/keytool-usage-with-runtime-getruntime-exec-under-linux ]我嘗試了他們的方法,但無法獲得證書。 @Hariprasad –
@Gus證書籤名對於標準的Java加密API是不可能的。您需要使用第三方庫(例如BouncyCastle)來做到這一點。 – Jcs