Как указать аргументы 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.