gpt4 book ai didi

scala - 如何在不使我的整个应用程序不安全的情况下忽略 Play Framework WS SSL 证书?

转载 作者:太空宇宙 更新时间:2023-11-03 13:54:07 25 4
gpt4 key购买 nike

新手提醒!我会尽量简明扼要地描述这一点。

Scala 2.10.3,Play 2.2.1。

我有一个在 HTTPS 上使用的 Play 应用程序。我的 conf/application.conf 文件中有一个设置,用于确保我的 Play 应用程序使用 SSL(并且已经过测试,没问题):

session.secure=true

但是现在,我希望我的 Play 应用程序使用 WS 库连接到网络服务。该 Web 服务在 HTTPS 上使用自签名 SSL 证书。我可以在我的 conf/application.conf 文件中设置以下设置,这样我就不必处理网络服务证书 - 我更喜欢这样。 (网络服务有些特殊,所以我宁愿根本不处理它的证书):

ws.acceptAnyCertificate=true

当我将这两个设置为 true 时,一切似乎都可以编译和运行。但是,这两种不同的设置会相互作用、重叠和/或干扰吗?如果我使用 AsyncHttpClient 并设置 SSLContext,我的应用程序是否更安全?

我尝试在 conf/application.conf 中设置 key 管理器和 keystore ,但我的 WS 调用导致 SSLEngine 错误 - 我认为这是由于我使用了 Play 2.2.1 和 SSL 支持WS 仅适用于 Play 2.3.x +

注意:我使用 WS 进行了以下类型的调用。我需要完成 future 的响应,我的函数将返回一个 bool 值。我应该改用

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

最佳答案

您不应设置 ws.acceptAnyCertificate。如果您打算进行客户端身份验证,则只需要一个 key 管理器和一个 keystore 。

改为将自签名证书添加到您的信任库,或者在命令行上使用“javax.net.ssl.trustStore”定义自定义信任库——参见 http://docs.oracle.com/javase/7/docs/technotes/guides/security/jsse/JSSERefGuide.html#Customization了解详情。

https://www.playframework.com/documentation/2.3.x/CertificateGeneration将引导您完成如何将证书添加到信任库。

还有一个应该有帮助的激活器模板:http://typesafe.com/activator/template/play-tls-example

关于scala - 如何在不使我的整个应用程序不安全的情况下忽略 Play Framework WS SSL 证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27326155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com