Я пытаюсь заставить clojure jar доверять самозаверяющему сертификату, который я сделал при запуске jar, но на самом деле я не хочу добавлять сертификат в свое хранилище сертификатов. Есть ли способ заставить JVM доверять этому самозаверяющему сертификату openssl эфемерно или таким образом, чтобы ему доверяли только для одного запуска?
Если есть способ сделать это на языке, и если он помогает, я использую библиотеку clj-http-lite, используя функцию get
. Тем не менее, дополнительные баллы для универсального решения для всей JVM.
Вы можете создать (временное) доверенное хранилище и настроить его в командной строке с системными свойствами javax.net.ssl.trustStore
и javax.net.ssl.trustStorePassword
: https://docs.oracle.com/javadb/10.8.3.0/adminguide/cadminsslclient.html
Я не рекомендую переопределять глобальное хранилище доверия с помощью аргумента командной строки javax.net.ssl.trustStore
для JVM. Вместо этого, если вам нужно подключиться к удаленному серверу с помощью самозаверяющего сертификата, я рекомендую создать контекст SSL в коде и использовать его для подключения. Этот подход лучше, если вы не хотите снижать глобальную безопасность JVM и если у вас есть несколько конечных точек, каждая из которых требует самоподписанного сертификата для подключения.
Вот пример Построения SSL-контекста, который можно использовать в функции http/get. Вы можете передать его функции request
(см. код для опции insecure? и сделайте то же самое).
Мой голос заблокирован, я проголосовал против этого, но оказалось, что мне нужен языковой способ сделать это и для целей модульного тестирования. Спасибо!