以编程方式为WSClient指定证书

时间:2017-04-28 00:31:32

标签: scala ssl playframework

在大型Play 2.5应用程序的一个部分中,我需要对供应商的网站进行TLS。供应商给了我一张证书(P7B证书,如果重要的话),我将使用它。

如果我使用curl,则很容易:curl --cert thecert.p7b ...

如果我只是连接到该网站,我认为这很简单:我可以在我的application.conf中设置play.server.https.keyStore.path变量。

但是我需要在一个案例中使用它,而不是在其他案例中使用它,唯一的提示来自这个tantalizing paragraph

  

配置SSL证书的另一种方法是提供自定义SSLEngine。这在需要自定义SSLEngine的情况下也很有用,例如在客户端身份验证的情况下。

哎呀,好吧。如何创建自定义SSLEngine以支持客户端身份验证?

1 个答案:

答案 0 :(得分:0)

以下编译,如果我不使用证书,甚至可以运行,但我必须做更多的测试:

AhcWSClient(
  config = AhcWSClientConfig(
    wsClientConfig = WSClientConfig(
      ssl = SSLConfig(
        keyManagerConfig = KeyManagerConfig(
          keyStoreConfigs = Seq(KeyStoreConfig(
            filePath = Some(pathToCert),
            password = Some(password))))))))
.url(url)
.get
.map(_.body)
.map(println)