【发布时间】:2014-12-09 03:31:25
【问题描述】:
新人警报!我会尽量简明扼要地描述这一点。
Scala 2.10.3,播放 2.2.1。
我有一个在 HTTPS 上使用的播放应用程序。我的 conf/application.conf 文件中有一个设置,用于确保我的 Play 应用使用 SSL(并且已经过测试并且没问题):
session.secure=true
但现在,我希望我的 play 应用程序使用 WS 库连接到 Web 服务。该网络服务使用自签名 SSL 证书在 HTTPS 上。我可以在我的conf/application.conf 文件中设置以下设置,这样我就不必处理网络服务证书——我更喜欢这样。 (网络服务有点特殊,所以我宁愿根本不处理它的证书):
ws.acceptAnyCertificate=true
当我将这两个都设置为true 时,一切似乎都可以编译和运行。但是这两种不同的设置是否相互作用、重叠和/或干扰?如果我使用 AsyncHttpClient 并设置 SSLContext,对我的应用程序是否更安全?
我尝试在conf/application.conf 中设置密钥管理器和密钥库,但我的 WS 调用导致 SSLEngine 错误 - 我认为这是由于我使用 Play 2.2.1 造成的,而对 WS 的 SSL 支持仅在 Play 2.3 上可用。 x +
注意: 我使用 WS 进行了以下类型的调用。我需要完成未来的响应,我的函数将返回一个布尔值。我应该改用
def myfun : Boolean = {
var ret : Boolean = false
val futureResult = WS.url("https://somewhere.com").post(jsonInput) onComplete {
case Success(response) => {
ret = true
}
case Failure(e) => {
Log.error("badness")
}
}
ret
}
参考:
How do I ignore ssl validation in play framework scala ws calls
https://www.playframework.com/documentation/2.2.x/ScalaWS
https://www.playframework.com/documentation/2.3.x/WSQuickStart
【问题讨论】:
-
FWIW,
myfun总是会返回 false。 -
在将代码发布到此处之前,我已将其匿名化。它的唯一目的是展示我正在与 WS 进行的那种通话。
标签: scala ssl https playframework-2.0