gpt4 book ai didi

java - 在 Linux 下使用 keytool 和 Runtime.getRuntime().exec()

转载 作者:行者123 更新时间:2023-11-30 09:14:06 25 4
gpt4 key购买 nike

我想通过在我的 java 脚本中调用 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);
}

我运行的时候没有报错。但它没有给我 keystore 。我的问题是:

  1. keytool 生成的证书不被视为需要使用 getinputstream() 提供给父进程的“子进程的输出”,对吗?

  2. 如果是,我还尝试了下面帖子中讨论的 getinputstream() 方法,

Keytool usage with Runtime.getRuntime().exec() under Linux

程序卡住了,似乎永远不会停止。

  1. 有没有其他方法可以使用 java 程序创建自签名证书?

我是 Java 新手,英语不是我的母语。我希望我已经清楚地表达了我的问题。

最佳答案

您可以再次尝试不同的方法 - 因为 keytool 是用 Java 编写的并且它是随 JDK 一起提供的,您实际上可以直接实例化 keytool 类,如 this answer .这种方法可以让您在您选择的 JKS 文件中生成一个自签名证书,但它不会让您以编程方式访问生成的证书。

请注意,在 Java 7 下您需要执行 new sun.security.tools.KeyTool(),但在 Java 8 下该类已被移动,您将需要执行 >新的 sun.security.tools.keytool.Main。当然,它只适用于 Oracle JDK,API 是内部的,不保证在任何 future 的 Java 版本中都存在,等等。

关于java - 在 Linux 下使用 keytool 和 Runtime.getRuntime().exec(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20668516/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com