Play Framework 2.3 WS SSL 禁用 AlgorithmChecker

Play Framework 2.3 WS SSL Disable AlgorithmChecker

我目前正在尝试使用 WS in Play 2.3 与 Visa Direct Payments 进行交互 API 但我正在苦苦挣扎,因为提供的沙箱密钥是 RSA,密钥大小为 1024,从我的角度来看看过源码注释,认为不安全所以禁用。

因为这只是沙箱,我想知道是否有办法禁用这个额外的密钥检查,我已经尝试过 ws.acceptAnyCertificate=true 但没有成功。

我在控制台收到的错误如下:

[warn] p.a.l.w.s.ConfigSSLContextBuilder - validateKeyStore: Skipping certificate with weak key size in visasandboxcert: Certificate failed: cert = "CN=841edac8-d8cd-4593-b575-fdf3bbee5e67,OU=VMT,O=Visa,L=Foster City,ST=CA,C=US" failed on constraint RSA keySize < 2048, algorithm = RSA, keySize = 1024 [error] play - Cannot invoke the action, eventually got an error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty

任何人都可以告诉我如何解决这个问题吗?最好不要更改 Play 源代码并从中构建。

首先,您需要与 Visa Direct Payments 联系并提交错误报告,让他们知道 1024 位密钥在当今时代是完全不能接受的。

其次,您需要设置:

ws.ssl.disabledKeyAlgorithms="RSA keySize < 1024"

这将告诉算法检查器放松。有关详细信息,请参阅 Certificate Validation

如果你使用的是play 2.6.x,你可以这样做

play.ws {
   ssl {
    debug.handshake = true
    disabledKeyAlgorithms =["RSA keySize < 1024"]
 }
}