簡體   English   中英

無法創建CSR證書

[英]Unable to create CSR certificate

在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)

    Process p = Runtime.getRuntime().exec(new String[] {
            "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" });

或者,使用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();

ProcessBuilders只能從命令行參數列表中創建,而不能從命令行中創建。 Runtime.getRuntime().exec(command)使用StringTokenizer拆分命令行,然后將結果傳遞給ProcessBuilder,看來StringTokenizer並不能很好地將命令行拆分為參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM