Как указать аргументы JVM SSL для встроенных сертификатов?

Скажем, у меня есть следующий JAR:

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

Мне нужен способ запустить 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 ответ

Значение "javax.net.ssl.keyStore" - это имя файла.

Ресурсы в файлах JAR не являются файлами.

Вы не можете сделать это с помощью свойств системы.

Вам нужно будет получить InputStream для ресурса и загрузить с него KeyStore, а также инициализировать KeyManager с этим и инициализировать SSLContext с этим и получить из него SSLSocketFactory и создать с ним SSLS файлы, как описано в Справочное руководство JSSE.

licensed under cc by-sa 3.0 with attribution.