我目前正在尝试在Play 2.3中使用WS与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"
这将告诉算法检查器放松。 有关更多详细信息,请参阅证书验证。
如果你使用的是Play 2.6.x,你可以这样做
play.ws {
ssl {
debug.handshake = true
disabledKeyAlgorithms =["RSA keySize < 1024"]
}
}