Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法创建CSR证书_Java_Ssl - Fatal编程技术网

Java 无法创建CSR证书

Java 无法创建CSR证书,java,ssl,Java,Ssl,在linux中,我无法使用以下命令使用java创建CSR文件。当直接从终端访问时,同样的命令也起作用 ../jre/bin/keytool -genkey -alias tomcat -keyalg RSA -keypass "password" -storePass "password" -keysize 2048 -validity 300 -dName "CN=testcn, OU=test, O=ME, L=testch, S=tests, C=testc" -keystore ../

在linux中,我无法使用以下命令使用java创建CSR文件。当直接从终端访问时,同样的命令也起作用

 ../jre/bin/keytool -genkey -alias tomcat -keyalg RSA -keypass "password" -storePass "password" -keysize 2048 -validity 300 -dName "CN=testcn, OU=test, O=ME, L=testch, S=tests, C=testc" -keystore ../jre/bin/ssl.keystore
获得以下异常:

keytool错误:java.lang.RuntimeException:使用错误,OU=test,为 不是合法命令


提前感谢:-)

不要将命令作为一个字符串传递,而是尝试将命令行分隔为各个参数

换言之,尝试替换

    Process p = Runtime.getRuntime().exec(command)

或者,使用ProcessBuilder:

    ProcessBuilder pb = new ProcessBuilder(
            "keytool", "-genkey", "-alias", "tomcat", "-keyalg", "RSA", "-keypass", "password", "-storePass", "password", "-keysize", "2048",
            "-validity", "300", "-dName", "CN=testcn, OU=test, O=ME, L=testch, S=tests, C=testc", "-keystore", "test.keystore");
    Process p = pb.start();

ProcessBuilder只能从命令行参数列表创建,不能从命令行创建
Runtime.getRuntime().exec(command)
使用StringTokenizer拆分命令行,然后将结果传递给ProcessBuilder,StringTokenizer似乎无法很好地将该命令行拆分为其参数。

在这里运行良好。可能命令(?)中有一个隐藏字符。我将您的代码作为复制/粘贴。我使用的是Java1.6。java代码进程p=Runtime.getRuntime().exec(命令);仍然得到相同的错误
    ProcessBuilder pb = new ProcessBuilder(
            "keytool", "-genkey", "-alias", "tomcat", "-keyalg", "RSA", "-keypass", "password", "-storePass", "password", "-keysize", "2048",
            "-validity", "300", "-dName", "CN=testcn, OU=test, O=ME, L=testch, S=tests, C=testc", "-keystore", "test.keystore");
    Process p = pb.start();