上的Web服务调用,我必须在https上发布一些数据到远程第三方Web服务。 Web应用程序的用户已经获得了单独的证书以连接到Web服务。 Web应用程序将作为最终用户和Web服务之间的中介工作,因为应用程序具有所有要发布的数据。这怎么能实现呢?可从Web应用程序启动的Applet或Java Web Start。你们可以投点灯吗?等待你的想法,建议。来自我的Web应用程序的https
三江源
上的Web服务调用,我必须在https上发布一些数据到远程第三方Web服务。 Web应用程序的用户已经获得了单独的证书以连接到Web服务。 Web应用程序将作为最终用户和Web服务之间的中介工作,因为应用程序具有所有要发布的数据。这怎么能实现呢?可从Web应用程序启动的Applet或Java Web Start。你们可以投点灯吗?等待你的想法,建议。来自我的Web应用程序的https
三江源
是否在不同的机器比Web应用程序上的Web服务提供商运行?
如果没有,您可以直接教Web应用程序公开处理用户请求所需的Web服务。您可以使用其中一种WS-Security协议来相互验证客户端和服务器。
如果是,Web服务提供者是否运行在Web应用程序可以看到的专用网络上?
如果是,您可以直接从您的Web应用程序使用Web服务,在用户通过SSL向Web应用程序进行相互身份验证之后,并将使用的数据发送给用户。
如果不是,则使用SSL在Web应用程序上相互认证用户;从Web应用程序中,使用WS-Security协议之一使用服务器证书来互相共享给Web服务提供者。
编辑
要使用自签名证书的工作,让小程序进口,在一个密钥证书,无论是在JRE的默认密钥库,或在运行时加载的自定义密钥库(更准确地说,用于密钥库信任证书称为TrustStore)。
您可以使用Oracle提供的keytool可执行文件创建密钥存储库。一旦您教您的小程序使用该密钥库,您的小程序就会信任该自签名服务器证书。
设置与应用程序信任库:
System.setProperty("javax.net.ssl.trustStore","path/to/clientTrustStore.key");
System.setProperty("javax.net.ssl.trustStorePassword","keystore-password-if-any");
阅读this link有关javax.net.ssl.trustStore中财产的进一步信息。
Web服务在不同的机器上运行,暴露给公众但只使用有效的证书。我想从具有添加到浏览器密钥库的证书的客户端浏览器调用Web服务。如果有效证书没有添加到浏览器中,则必须将错误暴露给客户端(通过浏览器)。所以调用过程应该在客户端/浏览器端运行。怎么样? Applet或Java Web Start。等待您的建议。 – 2011-03-01 19:39:57
对不起,我在这里。 然后,你应该去Applet,但你需要签署它来访问安装在运行本地机器上的证书等敏感数据。 有很多关于如何签署一个小程序的教程,只是谷歌“签署一个小程序”。 – 2011-03-06 11:52:44
这是因为applet是由浏览器自动执行的,所以代码不能被隐式视为可信。 希望这会有所帮助。 – 2011-03-06 12:01:34