我正在开发一个java客户端,我需要将一些soap xml发送到服务器。服务器正在http方案上运行,但它需要加密请求,就像https一样。我在服务器上生成了.cer和.key文件,同样也在服务器端导入了。现在,当我尝试执行以下命令向服务器发送请求时,它无法正常工作。
my soap xml在text.txt
中curl -vX POST -d @test.txt http://test.com:98/wcflib-tc/service.svc
--header "Content-Type:application/soap+xml; charset=utf-8;"
--cert /myserver/certs/server.crt
--key /myserver/certs/server.key
* About to connect() to test.com port 98 (#0)
* Trying 172.27.655.65... connected
* Connected to test.com (172.27.655.65) port 98 (#0)
> POST /wcflib-tc/service.svc HTTP/1.1
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.12.9.0 zlib/1.2.3 libidn/1.18 libssh2/1.2.2
> Host: test.com:98
> Accept: */*
> Content-Type:application/soap+xml; charset=utf-8;
> Content-Length: 962
>
< HTTP/1.1 500 Internal Server Error
< Content-Type: application/soap+xml; charset=utf-8
< Server: Microsoft-IIS/7.0
< X-Powered-By: Programmer's tears
< Date: Mon, 18 Nov 2013 05:26:18 GMT
< Content-Length: 576
<
* Connection #0 to host test.com left intact
* Closing connection #0
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">
<s:Header><a:Action s:mustUnderstand="1">http://www.w3.org/2005/08/addressing/soap/fault</a:Action></s:Header>
<s:Body><s:Fault><s:Code><s:Value>s:Sender</s:Value>
<s:Subcode><s:Value xmlns:a="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
a:InvalidSecurity</s:Value></s:Subcode></s:Code>
<s:Reason><s:Text xml:lang="en-US">
An error occurred when verifying security
for the message.</s:Text></s:Reason>
请让我知道解决方案。否则,让我知道如何使用任何java api处理.key和.cer文件的http请求。
答案 0 :(得分:0)
线索在http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd
- 您需要使用WS-Security。在这里阅读规范https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wss