【问题标题】:WSClient Play Framework SSL setupWSClient Play Framework SSL 设置
【发布时间】:2017-11-17 08:50:48
【问题描述】:

我正在尝试在我的 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-config 对象添加到 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

是我遗漏了什么还是这一切都错了?我正在使用最新的播放框架版本 2.6。

谢谢

【问题讨论】:

  • 最后有什么乐趣吗?

标签: scala ssl playframework ws-client


【解决方案1】:

这里有一个注释,“ssl-config”不是根键: https://www.playframework.com/documentation/2.8.x/WsSSL#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”。我不得不挖一点才能找到那个。有点混乱。

【讨论】:

    猜你喜欢
    • 2015-02-04
    • 2017-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-07
    • 1970-01-01
    相关资源
    最近更新 更多