JAVA基于HTTPS的加密远程调用的实现.

发布时间:2016-12-10 11:23:07 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"JAVA基于HTTPS的加密远程调用的实现.",主要涉及到JAVA基于HTTPS的加密远程调用的实现.方面的内容,对于JAVA基于HTTPS的加密远程调用的实现.感兴趣的同学可以参考一下。

ServicePlatform-v2最终通过HTTPS强加密实现了通讯的安全传输,毕竟传输的都是关键的用户账号,而且我们现在还没有自己的专有网络.ServicePlatform 的RMI使用的轻量级Hessian或Burlup协议是基于HTTP协议的,如果部署得当,在没有恶意窃听的情况下是不会出现用户信息泄漏的问题, 但是一旦平台启用后RMI调用被恶意截获,那么在request里设计的注册服务的密码验证和用户信息都将实效,SP平台的接口暴露,用户信息泄漏. 彻底的解决方法就是强制HTTPS方式访问RMI接口,而HTTPS对于HTTP是协议本身是透明的(所谓嵌套层的由来),所以HTTPS可以在不修改 SP的代码的(配置描述符的修改当然避免不了)情况下实现RMI通讯的强加密,而且也确实如此.ServicePlatform的默认部署是强制 HTTPS访问RMI接口,使用ServicePlatform的客户端除了需要配置为HTTPS的invoker的地址外,还需要获得 ServicePlatform的证书,否则JSSE将不会正常工作.下面是部署描述符web.xml里面强制HTTPS访问的部分. <!-- comment below to enable plain HTTP invoker rather than HTTPS only --><security-constraint>    <web-resource-collection>        <web-resource-name>remote</web-resource-name>        <url-pattern>/remote/*</url-pattern>    </web-resource-collection>    <user-data-constraint>        <transport-guarantee>CONFIDENTIAL</transport-guarantee>    </user-data-constraint></security-constraint> ServicePlatform的证书的生成由Java的keygen完成%JAVA_HOME%/bin/keytool -genkey -alias tomcat -keypass changeit -keyalg RSA -validity 365其中,changeit为密钥的生成密码,需要与tomcat的服务器部署描述符一致,参考下面的server.xml的片断<Connector port="8443" maxHttpHeaderSize="8192"               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"               enableLookups="false" disableUploadTimeout="true"               acceptCount="100" scheme="https" secure="true"               clientAuth="false" sslProtocol="TLS" keystorePass="changeit" keystoreFile="conf/keystore"/> 生成证书时必须填写正确的ServicePlatform运行的服务器的FQDN,然后和service-dist.properties文件中的invoker的URL的FQDN完全一致,否则JSSE将证书视为无效,无法建立HTTPS连接,然后在启动客户端的时候需要添加指向证书的JVM参数-Djavax.net.ssl.trustStore=path/to/your/generated/keystore/file 应用服务器和JDK版本信息Application Server tomcat-5.5.15JDK 1.5.0_06  

上一篇:.NET Tools每个.NET 开发人员应该下载的十个必备工具
下一篇:Exceptional C++ 读书笔记

相关文章

相关评论