设为首页 收藏本站
查看: 548|回复: 0

[经验分享] [IBM转贴]配置Tomcat 4使用SSL

[复制链接]

尚未签到

发表于 2017-2-4 11:52:31 | 显示全部楼层 |阅读模式
DSC0000.gif
developerWorks 中国  >  Security  >
配置Tomcat 4使用SSL


 
<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><!---->
DSC0001.gif   将此页作为电子邮件发送
<!----><!---->
拓展 Tomcat 应用
DSC0002.gif   下载 IBM 开源 J2EE 应用服务器 WAS CE 新版本 V1.1
<!---->                        
  级别: 初级
  赵 梁

  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 用到的软件包

  • Tomcat 4.0.2  用途:Web Server。            
    下载:             http://jakarta.apache.org/builds/jakarta-tomcat-4.0/release/v4.0.3/bin/           
  • JSSE 1.0,2  用途:用来产生Tocmcat使用的秘钥对(keystore)。            
    下载:              http://java.sun.com/products/jsse/           
  • Openssl 0.9.9.6  用途:用来产生CA证书、签名并生成IE可导入的PKCS#12格式私钥。            
    下载:             http://www.openssl.org/           
  以上工具的安装过程可以参考自带的帮助,本文就不再详细描述了。
  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等,一般只是在服务器端保存证书的方式略有不同,但它们的原理都是类似的,配置时可以在本文中办法的基础上做出相应 的调整。




回页首

  参考资料

  •             Tomcat SSL Configuration HOW-TO
  •             SSL3.0规范
  •             Description of the Secure Sockets Layer (SSL) Handshake (Q257591)
  •             keytool - Key and Certificate Management Tool
  •             Openssl使用手册




回页首

  关于作者
   赵梁,1995年毕业于北京航空航天大学。对J2EE, J2ME以及CORBA, Web Service等技术比较感兴趣。目前的主要工作是采用J2EE技术开发供分销企业使用的供应链/销售链ERP。可以通过电子邮件         b-i-d@163.com与作者联系。      

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-337394-1-1.html 上篇帖子: 线上tomcat 网络无法访问问题排查 下篇帖子: 略谈HttpClient和Tomcat的中文编码问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表