【发布时间】:2017-01-04 13:05:00
【问题描述】:
我一直致力于通过 https 调用 Web 服务的任务。 wsdl 本身包含以下有关安全性的信息 -
<wsid:Identity xmlns:wsid="http://schemas.xmlsoap.org/ws/2006/02/addressingidentity">
<dsig:KeyInfo xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
<dsig:X509Data>
<dsig:X509Certificate>
**XXX**
</dsig:X509Certificate>
<dsig:X509IssuerSerial>...</dsig:X509IssuerSerial>
<dsig:X509SubjectName>CN=FAEncryption, DC=cloud, DC=oracle, DC=com</dsig:X509SubjectName>
<dsig:X509SKI>**ZZZ**</dsig:X509SKI>
<dsig:X509Certificate>
**YYY**
</dsig:X509Certificate>
</dsig:X509Data>
</dsig:KeyInfo>
</wsid:Identity>
现在使用这些信息,我通过以下过程获得了证书 -
使用您喜欢的任何名称创建一个新文件。您必须将扩展名更改为 .cer 以表明它是一个证书文件。
使用文本编辑器打开刚刚创建的文件并在第一行输入“-----BEGIN CERTIFICATE-----”。
在下一行,将 Base64 编码的证书从服务 WSDL 文件复制到新创建的证书文件中。
在新行上添加“-----END CERTIFICATE-----”并保存文件。现在您有一个包含来自服务器的公钥的证书。
打开命令行并将目录更改为 $JAVA_HOME/bin。使用以下命令创建 KeyStore 并从证书中导入公钥。
如果您注意到,在 wsdl 中有两个证书。我将它们都添加到了密钥库中。命令是 -
keytool -import -file ~/ddrive/test/details/SubmitFlow.cer -alias orakey1 -keypass welcome -keystore ~/ddrive/test/details/test.jks -storepass Welcome
keytool -import -file ~/ddrive/test/details/SubmitFlow1.cer -alias orakey1 -keypass welcome -keystore ~/ddrive/test/details/test.jks -storepass Welcome
最初我只添加了一个证书。但后来,我将它们都添加了。我使用 spring-ws 进行 web 服务调用。但是我仍然收到 401 未经授权的呼叫。
我没有任何文件说明需要做什么。如果有人可以在这里指导我,那就太好了。顺便说一句,如果有帮助,这个 Web 服务与 Oracle HCM 相关。
【问题讨论】:
标签: web-services ssl wsdl x509 spring-ws