手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>Java技术>列表

J2EE平台安全

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

运行SSL的一般提示

SSL协议被设计成尽可能有效率和安全。可是,加密/解密是一个从执行角度看很花费计算的过程。在SSL上运行一个完整的Web应用是不十分必须的,并且让一个开发者决定哪个页面需要安全连接,哪个不需要,是符合惯例的。可能需要安全连接的页面包括登录页面,个人信息页面,购物车的付款,或者信用卡信息需要被传输的页面。在一个应用中的任何页面可以被简单在地址前面加上https:替代http:来通过secure socket请求。任何绝对请求安全连接的页面需要检查与这一页对应的协议的类型,并在如果https:没有被指定时采取合适的动作。

在安全连接上使用基于名字的实际主机是被质疑的。这是SSL协议自身设计上的局限。客户端浏览器接受服务器证书的SSL握手必须在HTTP请求被访问之前发生。结果,包含实际主机名的请求信息不能在认证前被判断,并且这也是不可能对于一个IP地址签发多个证书的原因。如果所有的基于一个IP地址的实际主机需要认证同一个证书,那么多个主机的地址就应该在服务器上不干扰普通的SSL操作。但是要知道,多数客户端浏览器将比较服务器的域名和证书中列出的域名,如果域名不匹配,那么浏览器将向客户显示警告。一般来说,在产品环境的SSL中普遍使用只有基于地址的主机。

开启基于SSL的相互认证

这一节讨论安装客户端的证书。当服务器和客户端的认证都可以用时,被称为相互或者双向的认证。在客户端认证,客户端需要提交由你选择接受的CA发布的证书。至少有有两种方法开启客户端认证。不管你选择哪种,你都必须输入keystore的位置和在Web服务器配置文件中的密码来开启SSL,就像在Configuring the SSL Connector(page 939)中讨论的那样。这两种开启基于SSL的相互认证方法如下:

l 设置在证书域中clientAuth为true。按下面步骤来完成设置,

a.如果你还没有启动应用服务器,就启动它。启动应用服务器的信息可以在Starting and Stopping the J2EE Application Server(page 91)中找到。

b.启动Admin Console。启动Admin Console的信息可以在Starting the Admin Console(page 92)中找到。

c.在Admin Console树中,展开Security,然后展开Realms,并选择certificate。证书域被用于基于带着SSL的HTTP的所有传输。

d.选择Add来把clientAuth的属性添加到服务器上。在名字里输入clientAuth,在值里输入true。

e.点击Save来保存这些新的属性。

f.登出Admin Console。

当你通过设置clientAuth属性为true开启客户端的认证时,客户端的认证将被所有的通过指定SSL端口的请求采用。

l 使用部署工具把认证的方法设置为Client-certificate。通过这种开启客户端认证的方式,客户端的认证只是对被安全约束控制的指定资源有效。以这种方式设置客户端认证将在Example:Client-Certificate Authentication over HTTP/SSL with JAX-RPC(page 950)中讨论。

当客户端认证以上述两种方法开启后,客户端认证将被执行两次。

检验相互的认证正在运行

你可以通过获得debug信息来检验相互的认证正在工作。这要在客户端完成,并且这个例子展示了如何传递在targets.XML中的一个系统属性来让targets.xml产生一个在系统属性中有javax.net.debug的客户,这可以被添加到例如<INSTALL>/j2eetutorial14/examples/security/common/targets.xml文件中。

为了使SSL相互认证的debug信息可用,要传递系统属性javax.net.debug=ssl,handshake,这可以提供关于相互认证是否运行的信息。下面的例子按照<INSTAL>/j2eetutorial14/examples/

security/common/targets.xml文件定义了run-mutualauth-client任务,是通过像粗体演示的那样添加sysproperty:

<target name="run-mutualauth-client"

description="Runs a client with mutual authentication over

SSL">

<java classname="${client.class}" fork="yes" >

<arg line="${key.store} ${key.store.password}

${trust.store} ${trust.store.password}

${endpoint.address}" />

<sysproperty key="javax.net.debug" value="ssl,

handshake" />

<sysproperty key="javax.net.ssl.keyStore"

value="${key.store}" />

<sysproperty key="java.net.ssl.keyStorePassword"

value="${key.store.password}"/>

<classpath refid="run.classpath" />

</java>

</target>

上一篇: 以前编写JSP网站时写的一些工具函数.
下一篇: Eclipse Release Build: 3.1正式发布! ——平台新特性(二)

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!