我正在使用Liberty 16.0.0.4,我想从facebook帐户图像中获取图像,所以我运行了下一个命令将facebook证书添加到Liberty服务器
keytool -importcert -keystore /pathToServer/Servers/'03- Liberty 16.0.0.4'/wlp/usr/servers/MyProjectServer/resources/key.jks -file facebook.crt -alias facebooksigner
并且证书已成功添加到liberty key.jks文件中,当我在此文件上列出证书时,我会看到它。
但是当我尝试使用网址url =新网址(pictureUrl);
来获取图片时出现问题它开火
[错误] CWPKI0022E:SSL握手失败:主题为CN = *。* facebook.com,O =“Facebook,Inc。”,L = Menlo Park,ST = California,C = US的签名者是从目标发送的主机。
注意:我将<keyStore id="defaultKeyStore" password="{xor}EzY9Oi0rJg=="/>
添加到server.xml
那你能猜出为什么会这样吗?谢谢:))
答案 0 :(得分:0)
要使SSL正常工作,客户端需要信任服务器向其提供的链 - 从顶层(根)级别一直向下。
你说你已经将Facebook证书放入你的信任商店,但是完整链是否值得信赖?至少,签署Facebook证书的根CA需要在信任存储区中。
答案 1 :(得分:0)
在16.0.0.4(及更早版本)中,java SE API将永远不会使用server.xml中定义的密钥库或信任库。他们将使用JRE的“cacerts”或您在控制信任和密钥库的着名SE系统属性中定义的任何替代方案。
在17.0.0.1(及更高版本)中,如果加载了transportSecurity-1.0,java SE调用者可以使用server.xml中定义的密钥库。