假设我有以下 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。想法?
'javax.net.ssl.keyStore' 的值是一个文件名。
JAR 文件中的资源不是文件。
您不能通过系统属性执行此操作。
您必须为资源获取一个 InputStream,并从中加载一个 KeyStore,并用它初始化一个 KeyManager,用它初始化一个 SSLContext,从中获取一个 SSLSocketFactory,并用它创建您的 SSLSockets,如在 JSSE 引用指南中描述。
我是一名优秀的程序员,十分优秀!