假设我有以下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上运行。想法?
答案 0 :(得分:2)
&#39; javax.net.ssl.keyStore&#39;的价值是文件名。
JAR文件中的资源不是文件。
您无法通过系统属性执行此操作。
您必须为该资源获取一个InputStream,并从中加载一个KeyStore,然后用它初始化一个KeyManager,并用它初始化一个SSLContext,并从中获取一个SSLSocketFactory,并用它创建您的SSLSockets,如在JSSE参考指南中描述。