|
<noscript><tr valign="top"><td width="8"><img alt="" height="1" width="8" src="//www.ibm.com/i/c.gif" _fcksavedurl="//www.ibm.com/i/c.gif"/></td><td width="16"><img alt="" width="16" height="16" src="//www.ibm.com/i/c.gif" _fcksavedurl="//www.ibm.com/i/c.gif"/></td><td class="small" width="122"><p><span class="ast">未显示需要 JavaScript 的文档选项</span></p></td></tr></noscript>
<script type="text/javascript" language="JavaScript">
</script>
|
<!----><!---->
<!----> |
级别: 初级
赵 梁
2002 年 5 月 01 日
目 前介绍配置Tomcat 4使用单向SSL认证(只验证服务器证书)的资料很多,过程也比较简单。但是由于配置其使用双向SSL认证(还需要验证客户端个人证书)除了需要CA对证 书签名外,还要从CA获得个人证书。有关这一问题,目前结合具体web服务器来讲解如何操作的资料很少。作者通过摸索借助一些SSL工具在本地实现了简单 的CA功能,并在此基础上配置成功了Tomcat的双向认证,希望能把其中的一些经验与大家共享。不过受本人水平所限,文中难免会有错误与不当之处,敬请 大家谅解。 <!----><!----> <!---->
Tomcat简介
Tomcat是Apache Jakarta的子项目之一,作为一个优秀的开源web应用服务器,全面支持jsp1.2以及servlet2.3规范。因其技术先进、性能稳定,而且免 费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的web应用服务器。
SSL(Server Socket Layer)简介
在网络上信息在源-宿的传递过程中会经过其它的计算机。一般情况下,中间的计算机不会监听路过的信息。但在使用网上银行或者进行信用卡交易的时候有可能被 监视,从而导致个人隐私的泄露。由于Internet和Intranet体系结构的原因,总有某些人能够读取并替换用户发出的信息。随着网上支付的不断发 展,人们对信息安全的要求越来越高。因此Netscape公司提出了SSL协议,旨在达到在开放网络(Internet)上安全保密地传输信息的目的,这 种协议在WEB上获得了广泛的应用。 之后IETF(www.ietf.org)对SSL作了标准化,即RFC2246,并将其称为TLS(Transport Layer Security),从技术上讲,TLS1.0与SSL3.0的差别非常微小。
SSL工作原理
SSL协议使用不对称加密技术实现会话双方之间信息的安全传递。可以实现信息传递的保密性、完整性,并且会话双方能鉴别对方身份。不同于常用的http协议,我们在与网站建立SSL安全连接时使用https协议,即采用https://ip:port/的方式来访问。
当我们与一个网站建立https连接时,我们的浏览器与Web Server之间要经过一个握手的过程来完成身份鉴定与密钥交换,从而建立安全连接。具体过程如下:
- 用户浏览器将其SSL版本号、加密设置参数、与session有关的数据以及其它一些必要信息发送到服务器。
- 服务器将其SSL版本号、加密设置参数、与session有关的数据以及其它一些必要信息发送给浏览器,同时发给浏览器的还有服务器的证书。如果配置服务器的SSL需要验证用户身份,还要发出请求要求浏览器提供用户证书。
- 客户端检查服务器证书,如果检查失败,提示不能建立SSL连接。如果成功,那么继续。
- 客户端浏览器为本次会话生成pre-master secret,并将其用服务器公钥加密后发送给服务器。
- 如果服务器要求鉴别客户身份,客户端还要再对另外一些数据签名后并将其与客户端证书一起发送给服务器。
- 如果服务器要求鉴别客户身份,则检查签署客户证书的CA是否可信。如果不在信任列表中,结束本次会话。如果检查通过,服务器用自己的私钥解密收到的pre-master secret,并用它通过某些算法生成本次会话的master secret。
- 客户端与服务器均使用此master secret生成本次会话的会话密钥(对称密钥)。在双方SSL握手结束后传递任何消息均使用此会话密钥。这样做的主要原因是对称加密比非对称加密的运算量低一个数量级以上,能够显著提高双方会话时的运算速度。
- 客户端通知服务器此后发送的消息都使用这个会话密钥进行加密。并通知服务器客户端已经完成本次SSL握手。
- 服务器通知客户端此后发送的消息都使用这个会话密钥进行加密。并通知客户端服务器已经完成本次SSL握手。
- 本次握手过程结束,会话已经建立。双方使用同一个会话密钥分别对发送以及接受的信息进行加、解密。
配置Tomcat 4.x 使用SSL
4.1 用到的软件包
以上工具的安装过程可以参考自带的帮助,本文就不再详细描述了。
4.2 建立自己的CA
4.2.1 建立工作目录
mkdir ca
4.2.2 生成CA私钥以及自签名根证书
4.2.2.1 生成CA私钥
openssl genrsa -out ca\ca-key.pem 1024
4.2.2.2 生成待签名证书
openssl req -new -out ca\ca-req.csr -key ca\ca-key.pem
4.2.2.3 用CA私钥进行自签名
openssl x509 -req -in ca\ca-req.csr -out ca\ca-cert.pem -signkey ca\ca-key.pem -days 365
4.3 设置Tomcat 4.x
在本文中用符号"%JDK_HOME%"来表示JDK的安装位置,用符号"%TCAT_HOME%" 表示Tomcat的安装位置。
4.3.1建立工作目录
mkdir server
4.3.2 生成server端证书
4.3.2.1 生成KeyPair
%JDK_HOME%\bin\keytool -genkey -alias tomcat_server -validity 365 -keyalg RSA -keysize 1024 -keypass changeit -storepass changeit -dname "cn=localhost, ou=department, o=company, l=Beijing, st=Beijing, c=CN" -keystore server\server_keystore
4.3.2.2 生成待签名证书
%JDK_HOME%\bin\keytool -certreq -alias tomcat_server -sigalg MD5withRSA -file server\server.csr -keypass changeit -keystore server\server_keystore -storepass changeit
4.3.2.3 用CA私钥进行签名
openssl x509 -req -in server\server.csr -out server\server-cert.pem -CA ca\ca-cert.pem -CAkey ca\ca-key.pem -days 365
4.3.2.4 导入信任的CA根证书到JSSE的默认位置(%JDK_ROOT %/jre/security/cacerts)
%JDK_HOME%\bin\keytool -import -v -trustcacerts -storepass changeit -alias my_ca_root -file ca\ca-cert.pem -keystore %JDK_HOME%\jre\lib\security\cacerts
4.3.2.5 把CA签名后的server端证书导入keystore
%JDK_HOME%\bin\keytool -import -v -trustcacerts -storepass changeit -alias tomcat_server -file server\server-cert.pem -keystore server\server_keystore
4.3.2.6 查看server端证书
keytool -list -keystore %JDK_HOME%\jre\lib\security\cacerts keytool -list -keystore server\server_keystore
4.3.3 修改server.xml使Tomcat支持SSL
首先找到以下内容,去掉对其的注释。然后参照红色部分修改。如果配置Tomcat不验证客户身份,可以设置clientAuth="false"。
<connector classname="org.apache.catalina.connector.http.HttpConnector"> port="8443" minProcessors="5" maxProcessors="75" enableLookups="true" acceptCount="10" debug="0" scheme="https" secure="true"> <factory classname="org.apache.catalina.net.SSLServerSocketFactory"> clientAuth="true" protocol="TLS" keystoreFile="%TCAT_HOME%/conf/server_keystore" keystorePass="changeit" /> </factory></connector>
|
然后把文件server\server_keystore复制到目录%TCAT_HOME%\conf\下。
4.4 在IE中安装个人证书
4.4.1 建立工作目录
mkdir client
4.4.2 生成client私钥并用CA私钥签名
4.4.2.1 生成client私钥
openssl genrsa -out client\client-key.pem 1024
4.4.2.2 生成待签名证书
openssl req -new -out client\client-req.csr -key client\client-key.pem
4.4.2.3 用CA私钥进行签名
openssl x509 -req -in client\client-req.csr -out client\client.crt -signkey client\client-key.pem -CA ca\ca-cert.pem -CAkey ca\ca-key.pem -CAcreateserial -days 365
4.4.2.4 生成client端的个人证书
因为JSSE1.0.2没有完全实现了对PKCS#12格式文件的操作(只能读取,不能输出),所以在这里需要用openssl制作client端的个人证书(包含私钥)。
openssl pkcs12 -export -clcerts -in client\client.crt -inkey client\client-key.pem -out client\client.p12
4.4.2.5 安装信任的根证书
把ca\ca-key.pem改名为ca\ca-key.cer,在client端的IE中使用"工具 ' Internet选项 ' 内容 ' 证书 ' 导入"把我们生成的CA根证书导入,使其成为用户信任的CA。
4.4.3 安装个人证书
把client.p12导入到client端的IE中作为个人证书,导入过程同4.4.2.5。
4.5 用IE浏览器使用SSL协议访问Tomcat
4.5.1 启动Tomcat 4.x
执行%TCAT_HOME%\bin\startup.bat启动Tomcat 4.x
4.5.2 用IE访问Tomcat 4.x
在IE浏览器的地址栏中输入https://localhost:8443,如果前面的操作都正确的话,应该可以看到Tomcat的欢迎页面。同时状态栏上的小锁处于闭合状态,表示您已经成功地与服务器建立了要求客户端验证的SSL安全连接。
结论
以上我们实现了为Tomcat 4.x配置要求客户端验证的SSL的全过程。对于其它类型的服务器,例如Apache,Netscape Enterprise Server, Websphere,Weblogic等,一般只是在服务器端保存证书的方式略有不同,但它们的原理都是类似的,配置时可以在本文中办法的基础上做出相应 的调整。
参考资料
关于作者
|
|
|
赵梁,1995年毕业于北京航空航天大学。对J2EE, J2ME以及CORBA, Web Service等技术比较感兴趣。目前的主要工作是采用J2EE技术开发供分销企业使用的供应链/销售链ERP。可以通过电子邮件 b-i-d@163.com与作者联系。
|
|
相关推荐
手把手教你怎么配置IBM WEBSPHERE MQ通过SSL连接,附详细步骤和实例代码
https ssl Tomcat中实现https安全连接与SSL配置https ssl Tomcat中实现https安全连接与SSL配置https ssl Tomcat中实现https安全连接与SSL配置https ssl Tomcat中实现https安全连接与SSL配置
描述了java程序代码去访问MQ的SSL加密的通道。如何配置JKS,如何配置MQ服务器的SSL秘钥库,如何配置证书制作证书和秘钥库。主要是如何编写java代码去访问SSL通道并取到数据。
通过本文档,我们将对 IBM V5000 存储配置进行详细的说明,帮助用户快速上手使用 IBM V5000 存储系统。 一、登录和初始化 要使用 IBM V5000 存储系统,首先需要登录到系统并进行初始化。登录地址为 ...
以下是一个针对正式使用环境下的Tomcat双向SSL认证的配置流程: 1. **准备工作** - 首先,确保安装了JDK 1.4.x及以上版本,因为Tomcat 5.0.x需要JSSE(Java Secure Socket Extension)的keytool工具。 - 下载并...
IHS的SSL配置方法 IHS(IBM HTTP Server)是一种基于Apache的Web服务器软件,用于提供安全的Web服务。为了确保数据传输的安全性,IHS支持SSL(Secure Sockets Layer)加密协议。本文将介绍IHS的SSL配置方法,包括...
通过以上步骤,您已经成功地在 IBM System X3250 M4 服务器上配置了 RAID 阵列,并准备好了使用 ServerGuide 引导安装 Windows 2008 系统的基础环境。这些步骤对于确保服务器的数据安全性和提高数据访问速度至关重要...
本指南将详细介绍IBM SVC软件的安装与配置过程,包括管理口IP的设置以及初始化步骤。 一、IBM SVC软件安装 在开始安装IBM SVC软件前,你需要确保硬件环境符合IBM SVC的系统需求。这通常包括特定的服务器硬件、操作...
Domino SSL配置是确保Lotus Domino服务器上的网络安全通信的关键步骤,它使用SSL(Secure Sockets Layer)或其更新版本TLS(Transport Layer Security)协议来加密数据传输,防止数据在传输过程中被窃取或篡改。...
本文将详细解释如何在IBM HTTP Server中启用SSL,以及与SSL相关的配置步骤。 首先,启用SSL涉及创建和管理数字证书。IBM HTTP Server使用ikeyman工具来生成和管理这些证书。在X-Windows控制台中,你需要运行`...
### Tomcat 服务器server.xml的关键参数配置 #### 一、配置Tomcat服务器访问端口 在Tomcat服务器中,可以通过修改`server.xml`文件中的`Connector`元素来配置服务器的监听端口。对于Tomcat 5.0.30版本来说,默认的...
IBM X3650 M4 配置 RAID1 并安装 2003_32b 本文将详细讲解 IBM X3650 M4 服务器如何配置 RAID1 并安装 32 位 Windows Server 2003 操作系统。 硬件配置 IBM X3650 M4 服务器配置了两个 500G 的硬盘,英特尔 Xeon ...
ibm存储配置详细说明。ibm存储配置详细说明。ibm存储配置详细说明。
本文将深入探讨IBM BMC的配置和使用,帮助用户更好地理解并利用这一强大的管理工具。 首先,我们需要了解BMC的基本功能。IBM BMC作为一个嵌入式控制器,它通过IPMI(Intelligent Platform Management Interface)...
WebSphere配置SSL指南 一、 SSL证书的创建 在WebSphere环境下,配置SSL需要首先创建证书。使用IBMIHS自带的“密钥管理实用程序”创建证书。首先,打开“密钥管理实用程序”,然后点击新建,创建“密钥数据库文件”...
4. **配置WebSphere**: 在WebSphere管理控制台中,进入“Security” -> “Global Security” -> “SSL certificate and key management”。选择“Key stores and certificates”,然后配置新的Key Store,指向之前...
在IBM X3650 M4服务器中,配置RAID是确保数据安全性和优化存储性能的关键步骤。RAID,即独立磁盘冗余阵列,通过组合多个物理硬盘来创建逻辑驱动器,以提高读写速度并提供数据冗余。在这款服务器中,通常配备8块硬盘...
手册中的详细内容不仅涵盖了硬件配置,还包括了维护工具的使用、系统管理和故障排除策略,是系统管理员和开发人员的重要参考资料。通过深入学习这本手册,读者可以深入了解服务器的内部运作机制,提升对服务器的掌控...
本文档将详细介绍如何配置IBM WebSphere Application Server (WAS) 的SSL功能,包括IBM HTTP Server的HTTPS功能配置以及WebSphere Plugin与WebSphere Application Server之间的SSL安全认证配置。 #### 二、配置IBM ...
本文将详细介绍在IBM 3650M2服务器上配置RAID的过程,包括使用WebBIOS和IBM ServerGuide引导盘的方法。 首先,我们需要了解RAID(Redundant Array of Independent Disks,独立磁盘冗余阵列)的基本概念。RAID是一种...