在我的开发和质量检查环境中,我将使用内部签名的证书访问休息端点。我工作的政策是将内部证书放在我们 Linux 服务器上的单独 bundle 中。
以下内容在 curl 中运行良好:
curl -X GET -H "Content-Type: application/json" -H "Accept: application/json" --negotiate --cacert /etc/pki/tls/out-internal-bundle.pem -u : "https://<dev or qa root>/api/profile/8461869a8b6e4558b20b14411337440b"
但是,我的这个端点的实际客户端是用 Scala 编写的。目前我正在使用 scala.io.Source
打电话:
val url = s"$baseUrl/data-profiler/$id"
using(Source.fromURL(url)) { source => {
val result = source.mkString
val jsonAst = result.parseJson
jsonAst.convertTo[Job]
}}
我想弄清楚如何在我的开发和质量检查环境中使用我们的内部包。有人用 Scala 或 Java 这样做吗?
最佳答案
您需要配置 JVM 使用的“truststore”,在启动 java 时使用“javax.net.ssl.trustStore
”选项,即
java -Djavax.net.ssl.trustStore=/etc/pki/tls/out-internal-bundle.jks ...
(如果您使用 SBT 启动您的应用,sbt
将采用相同的 -D
参数)
您需要将 CA 证书转换为 JKS 格式。
参见:
关于scala - Scala 或 Java 中的 --cacerts 等同于什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42354959/