我们需要通过HTTPS与SOA的外部合作伙伴集成 . 为此合作伙伴提供了他们的密钥对(以pfx文件的形式) . 当我们在SOAP UI中导入pfx文件并尝试使用合作伙伴URL进行连接时,它可以正常工作 .
但是当我们在weblogic中导入合作伙伴的密钥和证书时(我们使用的是身份和信任jks),我们得到以下错误:
错误:
summary = oracle.fabric.common.FabricInvocationException:无法成功调用 endpoints URI“https://www7.aeat.es/wlpl/SSII-FACT/ws/fe/SiiFactFEV1SOAP " successfully due to: javax.xml.soap.SOAPException: javax.xml.soap.SOAPException: Message send failed: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target ,detail=Unable to invoke endpoint URI " https://www7.aeat.es/wlpl/SSII-FACT/ws/fe/SiiFactFEV1SOAP”,原因如下:javax.xml.soap.SOAPException:javax.xml.soap.SOAPException:消息发送失败:sun.security.validator . ValidatorException:PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到所请求目标的有效证书路径
,代码= null}
我们按照以下步骤在weblogic中导入合作伙伴的密钥和证书:
导入合作伙伴密钥和证书的步骤如下:
-
合作伙伴向我们提供了包含私钥和证书的pfx文件 .
-
合作伙伴提供的PFX导出密钥:
openssl pkcs12 -in LuisEmail.pfx -nocerts -out LuisEmail.key -nodes
-
由LUIS提供的PFX导出证书:openssl pkcs12 -in LuisEmail.pfx -nokeys -out LuisEmail.cer -nodes
-
将LuisEmail.cer复制到Windows并通过手动导出创建root.cer和inter.cer .
-
通过按顺序组合所有3个证书来创建链:中间根服务器并将其另存为.pem文件 .
-
将pem文件带到linux机器上 .
-
设置环境以执行java util.importPrivateKey实用程序 . /apps/oracle/product/fmw/wlserver_10.3/server/bin/setWLSEnv.sh
-
将私钥文件转换为rsa私钥文件:openssl rsa -in LuisEmail.key -out LuisEmail_RSA.key
-
在身份存储中导入pem / key:java utils.ImportPrivateKey -keystore netappidentity_STA.jks -storepass -storetype JKS -keypass -alias staPrivateKey -certfile LuisEmailChain.pem -keyfile LuisEmail_RSA.key -keyfilepass
-
在信任库中导入Root CER文件:keytool -import -v -noprompt -trustcacerts -alias starootcert -file LuisEmailRoot.cer -keystore netapptrust_STA.jks -storepass
-
重新启动的服务器
任何关于我们在这里失踪的指针都会受到赞赏!请注意,当我们使用keytool explorer检查pfx文件时,我们只看到私钥和服务器(域)证书 . 没有中间证书和根证书 .
也有人知道为什么合作伙伴会给我们密钥对,如果它将是一个单向ssl或双向ssl . 我们的印象是只有公共证书才能进行ssl通信 .
谢谢 .
1 回答
我们能够在这里找出问题所在 . 由于我们的合作伙伴是政府税务机构(我认为他们不想信任我们的CA),他们为我们提供了一对密钥(拥有私钥) . 我们应该把它当作我们自己的钥匙 .
我们在我们的身份存储中导入私钥,并从信任存储中的URL导出证书,并且连接正常 .
谢谢