gpt4 book ai didi

java - https 的 async-http-client 的 CertificateException

转载 作者:行者123 更新时间:2023-11-29 05:31:23 25 4
gpt4 key购买 nike

我开始在访问 https://ws.plimus.com/ 时遇到问题与 async-http-client几天之前。我收到“一般 SSLEngine 问题”消息,在堆栈跟踪中我可以看到它是由

java.security.cert.CertificateException: Certificates does not conform to algorithm constraints

This SO question描述的基本上是同一件事。 Commenting out the line in java.security使错误消失,但我认为有充分的理由禁用 MD2。

使用 Raman's answer对于提示,我发现确实是 async-http-client 库 uses the X509TrustManager interface ,但我无能为力。

运行这个:

openssl s_client -showcerts -connect ws.plimus.com:443 | grep -i md2

什么也没找到,所以我什至不知道是哪个证书导致了这个问题。

除了解决方法之外,我还能做些什么吗?

我放了重现问题的演示代码 on github .

最佳答案

您提到的服务器确实使用相同的 Verisign Class 3 证书和我在 other answer 中描述的 md2WithRSAEncryption 算法。 :

openssl s_client -showcerts -no_ign_eof -connect ws.plimus.com:443
CONNECTED(00000003)
... [ stripped ] ...
3 s:/C=US/O=VeriSign, Inc./OU=Class 3 Public Primary Certification Authority
i:/C=US/O=VeriSign, Inc./OU=Class 3 Public Primary Certification Authority
-----BEGIN CERTIFICATE-----
MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG
A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz
cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2
MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV
BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt
YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN
ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE
BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is
I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G
CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do
lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc
AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k
-----END CERTIFICATE-----

然后将该证书转换为文本形式:

openssl x509 -text -noout < cert.pem
Certificate:
Data:
Version: 1 (0x0)
Serial Number:
70:ba:e4:1d:10:d9:29:34:b6:38:ca:7b:03:cc:ba:bf
Signature Algorithm: md2WithRSAEncryption
Issuer: C=US, O=VeriSign, Inc., OU=Class 3 Public Primary Certification Authority
Validity
Not Before: Jan 29 00:00:00 1996 GMT
Not After : Aug 1 23:59:59 2028 GMT
Subject: C=US, O=VeriSign, Inc., OU=Class 3 Public Primary Certification Authority
... [ stripped ] ...

仔细阅读 async-http-client 的 javadoc,看起来您可以在构建 AsyncHttpClientConfig 实例时调用 setSSLContext:

https://github.com/AsyncHttpClient/async-http-client/blob/master/api/src/main/java/org/asynchttpclient/AsyncHttpClientConfig.java#L841

因此,您可以使用 X509ExtendedTrustManager 创建自己的 SSLContext 并配置异步 http 客户端库来使用它,而不是使用其内部默认值。那应该可以解决您的问题!

这是一个要点,其中包含我用来调试此问题的 SSL 测试代码。您可以轻松地从中提取创建自己的 SSLContext 所需的内容:https://gist.github.com/rocketraman/8312705 .

关于java - https 的 async-http-client 的 CertificateException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20988183/

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