我想通过在我的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