WSC客户端播放框架SSL设置

问题描述 投票:4回答:1

我试图在我的Play应用中使用自定义ssl配置的WSClient,但它没有工作。

我的控制器看起来像这样。

@Singleton
class HomeController @Inject()(cc: ControllerComponents, ws: WSClient, configuration: Configuration) extends AbstractController(cc) {

  implicit val timeout: Timeout = 5 seconds

  def index() = Action.async {
    val url = "https://our-microservice-endpoint.com"
    ws.url(url).get().map {
      response =>
        Ok((response.xml \\ "payload").head.text)
    }
  }
}

我添加了下面的ssl配置对象到 application.conf:

ssl-config {
  keyManager = {
    stores = [
      { type = "JKS", path = "client.jks", password = "changeit1" }
    ]
  }
  trustManager = {
    stores = [
      { type = "JKS", path = "exampletrust.jks" }
    ]
  }
}

(显然,我的本地设置已经到位)。我知道我传递给密钥存储和信任存储的值是有效的,因为它们是我在其他应用程序中使用的。

然而,如果我调试应用程序并查看已经注入的wsclient,它似乎没有ssl设置。当我运行控制器时,我得到了一个ssl handshake_failure.

是我错过了什么,还是这一切都错了?我使用的是最新的play框架2.6版本。

谅谅,我是用最新的play框架2.6版。

scala ssl playframework ws-client
1个回答
0
投票

这里有一个说明,"ssl-config "不是根密钥。https:/www.playframework.comdocumentation2.8.xWsSSL#Table-of-Contents

注意:下面的链接是相对于Typesafe SSLConfig的,它使用ssl-config作为ssl属性的前缀。 Play 使用 play.ws.ssl 前缀,因此,例如 ssl-config.loose.acceptAnyCertificate 变成 play.ws.ssl.loose.acceptAnyCertificate 为你的 play WSClient 配置。

也许可以尝试将application.conf中的 "ssl-config "替换为 "play.ws.ssl"。 我不得不挖了一下才找到那个,它有点混乱。

© www.soinside.com 2019 - 2024. All rights reserved.