如何为嵌入式证书指定JVM SSL参数?

时间:2014-04-30 18:55:09

标签: java ssl command-line

假设我有以下JAR:

myapp-1.0.jar/
    META-INF/
        MANIFEST
    classes/
        com/
            <All my .class files>
        mycert1.cer
        mycert2.cer
        mycert3.cer

我需要一种从命令行运行JAR的方法,如下所示:

java -jar myapp-1.0.jar -Djavax.net.ssl.keyStore=myapp-1.0.jar/classes/mycert1.cer

或:

java -jar myapp-1.0.jar -Djavax.net.ssl.keyStore=myapp-1.0.jar/classes/mycert2.cer

但由于JAR是一个ZIP文件,我似乎无法从命令行访问“嵌入式”SSL证书。此解决方案需要在Windows和Linux上运行。想法?

1 个答案:

答案 0 :(得分:2)

&#39; javax.net.ssl.keyStore&#39;的价值是文件名。

JAR文件中的资源不是文件。

您无法通过系统属性执行此操作。

您必须为该资源获取一个InputStream,并从中加载一个KeyStore,然后用它初始化一个KeyManager,并用它初始化一个SSLContext,并从中获取一个SSLSocketFactory,并用它创建您的SSLSockets,如在JSSE参考指南中描述。