问题描述
我试图让 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
我不建议使用 JVM 的命令行参数 javax.net.ssl.trustStore
覆盖全局信任存储。相反,如果您需要使用自签名证书连接到远程服务器,我建议在代码中构建 SSL 上下文并将其用于连接。如果您不想降低全局 JVM 安全性,并且如果您有多个端点,每个端点都需要自签名证书进行连接,则这种方法会更好。
这是可以在 http/get 函数中使用的 Building SSL context 示例。您可以将其传递给 request
函数(请参阅代码以了解不安全?选项并采用相同的方式)。