Scala Play 框架使用 Play WS 将多个信任管理器指向 PEM 文件

标签 scala ssl playframework playframework-webservice

我想使用 Play WS 在我的应用程序中调用多个其他服务。

鉴于此文档,https://www.playframework.com/documentation/2.4.x/WSQuickStart

我知道如何将信任管理器指向 PEM 文件。但是这里的问题是我想调用多个 Web 服务并且每个服务都有不同的根证书怎么样?如何指定多个证书?

play.ws.ssl {
  trustManager = {
    stores = [
      { type = "PEM", path = "/path/to/cert/globalsign.crt" }
    ]
  }
}

另外,如果某些服务使用公信证书,上面的代码是否会对这些服务生效?

最佳答案

要使用多个证书,您可以执行以下任一操作:

  1. 仅从下面将每个证书添加到 ssl 配置,如 globalsign.crtservice2.crt
  2. 创建一个信任库,将每个证书添加到信任库,然后将信任库提供给 ws。这将与 services.jks 仅在下面
  3. 或 1 和 2 的组合..

要同时依赖公共(public)证书,您需要告诉 play-ws 也使用默认信任库。

play.ws.ssl {
  trustManager = {
    stores = [
      { type = "PEM", path = "/path/to/cert/globalsign.crt" }
      { type = "PEM", path = "/path/to/cert/service2.crt" }
      { type = "JKS", path = "/path/to/truststore/services.jks" } #Added trust store
      { path: ${java.home}/lib/security/cacerts } # Fallback to default JSSE trust store
    ]
  }
}

引用https://www.playframework.com/documentation/2.4.x/ExampleSSLConfig .

您可能需要引用以下内容来创建和管理信任库:https://docs.oracle.com/cd/E19509-01/820-3503/6nf1il6er/index.html , https://docs.oracle.com/cd/E19830-01/819-4712/ablqw/index.html

关于Scala Play 框架使用 Play WS 将多个信任管理器指向 PEM 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34740035/

相关文章:

scala - 猫 Monad 变形金刚

performance - 如何找出我的 Scala 代码中使用了哪些隐式

scala - Scala中如何解决冲突成员的继承

iphone - 如何使用 NSURLConnection 取消持久连接?

java - 如何在 Play 中组织 java 和 scala 代码?

scala - 从 Scala 方法返回 AnyVal

json - OpenAPI v3 HTTPS 模拟

java - SSLSocket如何像Socket.sendUrgentData()一样发心连接

apache - 前端代理未正确引用资源

java - 如何在 Play 中将动态表单字段绑定(bind)到 HashSet!用Java?