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

Scala Play framework points multiple trust managers at the PEM file using Play WS

我想使用 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" }
    ]
  }
}

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

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

  1. 将每个证书添加到 ssl 配置,如 globalsign.crt service2.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