2014-04-30 58 views
1

比方說,我有以下JAR:如何爲嵌入式證書指定JVM SSL參數?

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上運行。想法?

回答

2

'javax.net.ssl.keyStore'的值是一個文件名。

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

你不能通過系統屬性來做到這一點。

您必須獲取資源的InputStream,然後從中加載KeyStore,然後用此初始化KeyManager,然後用此初始化SSLContext,然後從中獲取SSLSocketFactory,然後使用它創建SSLSocket,如JSSE參考指南中所述。