Dec 29

[原]在红旗5.0上部署Tomcat及使用https连接 阴

linuxing , 11:31 , 网络服务 » 常见服务 , 评论(0) , 引用(0) , 阅读(12934) , Via 本站原创 | |
    收到客户咨询,在红旗DC Server 5.0 for x86_64上部署Tomcat的时候,运行http监听正常,但https监听启动后,不能连接。特找个环境测试了一下,以下是操作步骤。

一、系统环境
引用
操作系统:红旗 DC Server 5.0 for x86_64 SP2
应用软件:Tomcat 5.5、jdk 1.5.0_04(系统自带)

Tomcat 官方网站:http://tomcat.apache.org/

二、部署Tomcat
1、下载
从官方网站上下载二进制代码包,我选择的是:Binary Distributions - Core:

# wget http://apache.mirror.phpchina.com/tomcat/tomcat-5/v5.5.27/bin/apache-tomcat-5.5.27.tar.gz
# tar xzvf apache-tomcat-5.5.27.tar.gz
# mv mv apache-tomcat-5.5.27/ /usr/loca/tomcat5.5.27

2、查看系统自带java版本和路径
执行:
引用
# java -version
java version "1.5.0_04"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_04-b05)
Java HotSpot(TM) 64-Bit Server VM (build 1.5.0_04-b05, mixed mode)
# type -a java
java is /usr/bin/java
java is /usr/lib/jdk/bin/java
# ll /usr/bin/java
lrwxrwxrwx  1 root root 26 Dec 30 00:01 /usr/bin/java -> /usr/java/default/bin/java
# ll /usr/java/
total 8
lrwxrwxrwx  1 root root   16 Dec 30 00:01 default -> /usr/java/latest
drwxr-xr-x  9 root root 4096 Sep 20  2007 jdk1.5.0_04
lrwxrwxrwx  1 root root   21 Dec 30 00:01 latest -> /usr/java/jdk1.5.0_04
# rpm -qf /usr/java/latest/bin/java
jdk-1.5.0_04-fcs

可见,系统中默认使用的java是在/usr/java目录,/usr/java/latest是个链接。(系统中/usr/lib/jdk也是个链接)

3、设置环境变量
在/root/.bashrc中增加:
引用
export JAVA_HOME=/usr/java/latest
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$HOME/bin:$ORACLE_HOME:$PATH

4、启动Tomcat
执行:
引用
# cd /usr/local/tomcat5.5.27/bin
# ./startup.sh
Using CATALINA_BASE:   /usr/local/tomcat5.5.27
Using CATALINA_HOME:   /usr/local/tomcat5.5.27
Using CATALINA_TMPDIR: /usr/local/tomcat5.5.27/temp
Using JRE_HOME:       /usr/java/latest/jre
# netstat -ln|grep 8080
tcp        0      0 :::8080                     :::*                        LISTEN

默认界面:
点击在新窗口中浏览此图片

三、部署https
Tomcat可以不需要依赖第三方的Web服务端,可直接支持OpenSSL或JSSE的证书,提供https加密链接访问支持。
以下内容,参考Tomcat官方网站上的:SSL Configuration HOW-TO
1、快速部署
使用jdk提供的keytool工具常见证书:
引用
# pwd
/root
# keytool -genkey -alias tomcat -keyalg RSA
Enter keystore password:  changeit ←需提供一个访问keystore的密码,默认是changeit
What is your first and last name?
  [Unknown]:  eportal.gz.gd.cpn ←若需要部署CAS等应用,这需和今后使用的域名相同
What is the name of your organizational unit? ←下面的信息会写入证书中供用户获取证书时参考,根据实际情况填写
  [Unknown]:  redflag
What is the name of your organization?
  [Unknown]:  redflag
What is the name of your City or Locality?
  [Unknown]:  GuangZhou
What is the name of your State or Province?
  [Unknown]:  GuangDong
What is the two-letter country code for this unit?
  [Unknown]:  GZ
Is CN=eportal.gz.gd.cpn, OU=redflag, O=redflag, L=GuangZhou, ST=GuangDong, C=GZ correct?
  [no]:  yes

Enter key password for <tomcat>
        (RETURN if same as keystore password):  changeit ←这需要填入访问key的密码,该密码用于区别存在于keystore中的其他证书。但按照Tomcat上的说明,必须和前面keystore密码相同

完成后,会在用户主目录/root/下生成证书文件.keystore:
引用
# ll /root/.keystore
-rw-r--r--  1 root root 1376 Dec 30 13:42 /root/.keystore

※ 注意:根据文档及屏幕的提示,在键入key密码时,可以直接回车表示和keystore的密码相同。但经测试,我直接回车后,在启动Tomcat https服务时,日志中报错:
引用
Dec 30, 2008 11:07:15 AM org.apache.catalina.startup.Catalina start
SEVERE: Catalina.start:
LifecycleException:  service.getName(): "Catalina";  Protocol handler start failed: java.io.IOException: Keystore was tampered with, or password was incorrect

所以,建议您还是老老实实的再敲一次keystore的密码吧。

2、启动tomcat https监听
然后,修改/usr/local/tomcat5.5.27/conf/server.xml文件,把原来已经注释SSL的部分取消,也就是激活:
引用
<-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 -->
<Connector port="8443" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" disableUploadTimeout="true"
               acceptCount="100" scheme="https" secure="true" keystorePass="changeit"
               clientAuth="false" sslProtocol="TLS" />

注意修改配置文件中keystorePass为keystore的密码,如果密钥不是存放在/root/.keystore,或使用了另外的文件名。可在配置文件中定义keystoreFile="/path/.keystore"。
(Tomcat的配置文件,使用<!-- xxxxx -->的方式注释的)
重启tomcat:
引用
# ./shutdown.sh
[root@vmhost bin]# ./startup.sh
[root@vmhost bin]# netstat -ln|grep 8443
tcp        0      0 :::8443                     :::*                        LISTEN

访问https://ip:8443/,结果:
点击在新窗口中浏览此图片
(这是IE 7的安全警告,可以不必理会,点击“继续浏览”)
点击在新窗口中浏览此图片
请留意地址栏上使用的是https访问,而不是http。从客户端获取到的证书信息是:
点击在新窗口中浏览此图片

3、给JVM导入证书
如果需要安装CAS,上面的工作还未完成,应把证书导入客户端的JVM上。首先,导出证书文件:

引用
# cd /root/
# keytool --export -file server.crt -alias tomcat
Enter keystore password:  changit ←输入keystore的密码
Certificate stored in file <server.crt>

然后为客户端的JVM导入密钥:
引用
# keytool -import -keystore $JRE_HOME/lib/security/cacerts -file ./server.crt -alias tomcat
Enter keystore password:  changeit ←输入changeit或已经设定的keystore密码
Owner: CN=eportal.gz.gd.cpn, OU=redflag, O=redflag, L=guangzhou, ST=guangdong, C=GZ
Issuer: CN=eportal.gz.gd.cpn, OU=redflag, O=redflag, L=guangzhou, ST=guangdong, C=GZ
Serial number: 49599397
Valid from: Tue Dec 30 11:20:55 GMT+08:00 2008 until: Mon Mar 30 11:20:55 GMT+08:00 2009
Certificate fingerprints:
         MD5:  9E:1C:53:B4:84:78:98:A7:66:53:B4:48:10:32:83:EC
         SHA1: BE:2F:F7:9C:62:5F:4B:48:3D:91:EC:A0:88:2D:32:30:EC:7E:D8:63
Trust this certificate? [no]:  yes
Certificate was added to keystore

最后,重新启动Tomcat即可。

四、默认用户名和密码
这是我首次使用Tomcat时遇到的困惑,相信也是很多朋友都会遇到的。就是访问Tomcat首页时,点击“Administration”部分的内容,都会提示需要输入用户名和密码。
其在conf/tomcat-users.xml中设定,默认内容如下:
引用
# cat tomcat-users.xml
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <user username="tomcat" password="tomcat" roles="tomcat"/>
  <user username="role1" password="tomcat" roles="role1"/>
  <user username="both" password="tomcat" roles="tomcat,role1"/>
</tomcat-users>

这里role只有tomcat role1权限的用户,我们要访问“Administration”部分的页面,需添加一个"manager"的权限角色和用户。修改为如下内容:
引用
# cat tomcat-users.xml
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <role rolename="manager"/>
  <role rolename="admin"/>

  <user username="tomcat" password="tomcat" roles="tomcat"/>
  <user username="role1" password="tomcat" roles="role1"/>
  <user username="both" password="tomcat" roles="tomcat,role1"/>
  <user username="admin" password="admin" roles="manager"/>
</tomcat-users>

重新启动Tomcat后,输入http://ip:8080/,点击“Status”,输入用户名和密码都是admin,Tomcat状态显示如下:
点击在新窗口中浏览此图片

五、参考资料
SSL Configuration HOW-TO
tomcat配置 https
Tomcat,Squid,Lighttpd的https配置
备忘:启用 Tomcat 下的 HTTPS
给Tomcat配置HTTPS
Centos4.4+Apache2.2.4+tomcat6.0.14+jdk1.5整合安装
CentOS4.4下整合apache2.2和tomcat5.5
Howto install Tomcat 5 on CentOS 4
Installing Tomcat5 on RHEL4 or CentOS4.2
Tags: ,
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]