Java安全Web服务

(我是从stackoverflow重新发布这个问题 ,如果有某种方式,我可以join问题或只是移动的问题,请让我知道,谢谢。)

我正在尝试将http web服务转换为https。 我将标签添加到web服务。

@SecurityDomain(value = "jbossws-ssl") 

 @WebContext(contextRoot="/common/ws", // already here urlPattern="/A2", // already here authMethod = "CLIENT-CERT", // added transportGuarantee = "CONFIDENTIAL") // added 

但是当我的客户端连接到https://host:80/path/to/ws我得到一个exception:

Caused by: java.io.IOException: HTTPS hostname wrong: should be <host>

(整个事情如下所示)。 我怀疑这与正在使用的证书有关。 我认为我需要使用java keytool来解决这个问题。 如果有人可以为我核实,将不胜感激。

 javax.xml.soap.SOAPException: java.io.IOException: Could not transmit message at org.jboss.ws.core.soap.SOAPConnectionImpl.callInternal(SOAPConnectionImpl.java:115) at org.jboss.ws.core.soap.SOAPConnectionImpl.call(SOAPConnectionImpl.java:66) at com.alcatel.tpapps.common.utils.SOAPClient.execute(SOAPClient.java:146) at com.alcatel.tpapps.common.utils.SOAPClient.main(SOAPClient.java:233) Caused by: java.io.IOException: Could not transmit message at org.jboss.ws.core.client.RemotingConnectionImpl.invoke(RemotingConnectionImpl.java:192) at org.jboss.ws.core.client.SOAPRemotingConnection.invoke(SOAPRemotingConnection.java:77) at org.jboss.ws.core.soap.SOAPConnectionImpl.callInternal(SOAPConnectionImpl.java:106) ... 3 more Caused by: org.jboss.remoting.CannotConnectException: Can not connect http client invoker. HTTPS hostname wrong: should be <host>. at org.jboss.remoting.transport.http.HTTPClientInvoker.useHttpURLConnection(HTTPClientInvoker.java:368) at org.jboss.remoting.transport.http.HTTPClientInvoker.transport(HTTPClientInvoker.java:148) at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:141) at org.jboss.remoting.Client.invoke(Client.java:1858) at org.jboss.remoting.Client.invoke(Client.java:718) at org.jboss.ws.core.client.RemotingConnectionImpl.invoke(RemotingConnectionImpl.java:171) ... 5 more Caused by: java.io.IOException: HTTPS hostname wrong: should be <host> at sun.net.www.protocol.https.HttpsClient.checkURLSpoofing(HttpsClient.java:490) at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:415) at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:170) at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:857) at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:230) at org.jboss.remoting.transport.http.HTTPClientInvoker.useHttpURLConnection(HTTPClientInvoker.java:288) ... 10 more 

更新1

我尝试了以下,但它对exception没有影响:

 host[user:/path][525]% keytool -genkey -keystore server.keystore -alias host ... ... 

更新2

其实不知道我在Update 1中做了什么是对的,因为我没有在那里指定一个主机名…

错误信息是抱怨你的端口。 http通常在端口80上运行,https在端口443上运行。您正尝试在端口80上使用https

 https://sco-up:80/path/to/ws 

 https://sco-up/path/to/ws 

这将自动使用https连接的端口443。