Dec
29
[原]在红旗5.0上部署Tomcat及使用https连接
收到客户咨询,在红旗DC Server 5.0 for x86_64上部署Tomcat的时候,运行http监听正常,但https监听启动后,不能连接。特找个环境测试了一下,以下是操作步骤。
一、系统环境
Tomcat 官方网站:http://tomcat.apache.org/
二、部署Tomcat
1、下载
从官方网站上下载二进制代码包,我选择的是:Binary Distributions - Core:
2、查看系统自带java版本和路径
执行:
可见,系统中默认使用的java是在/usr/java目录,/usr/java/latest是个链接。(系统中/usr/lib/jdk也是个链接)
3、设置环境变量
在/root/.bashrc中增加:
4、启动Tomcat
执行:
默认界面:
三、部署https
Tomcat可以不需要依赖第三方的Web服务端,可直接支持OpenSSL或JSSE的证书,提供https加密链接访问支持。
以下内容,参考Tomcat官方网站上的:SSL Configuration HOW-TO
1、快速部署
使用jdk提供的keytool工具常见证书:
完成后,会在用户主目录/root/下生成证书文件.keystore:
※ 注意:根据文档及屏幕的提示,在键入key密码时,可以直接回车表示和keystore的密码相同。但经测试,我直接回车后,在启动Tomcat https服务时,日志中报错:
所以,建议您还是老老实实的再敲一次keystore的密码吧。
2、启动tomcat https监听
然后,修改/usr/local/tomcat5.5.27/conf/server.xml文件,把原来已经注释SSL的部分取消,也就是激活:
注意修改配置文件中keystorePass为keystore的密码,如果密钥不是存放在/root/.keystore,或使用了另外的文件名。可在配置文件中定义keystoreFile="/path/.keystore"。
(Tomcat的配置文件,使用<!-- xxxxx -->的方式注释的)
重启tomcat:
访问https://ip:8443/,结果:
(这是IE 7的安全警告,可以不必理会,点击“继续浏览”)
请留意地址栏上使用的是https访问,而不是http。从客户端获取到的证书信息是:
3、给JVM导入证书
如果需要安装CAS,上面的工作还未完成,应把证书导入客户端的JVM上。首先,导出证书文件:
然后为客户端的JVM导入密钥:
最后,重新启动Tomcat即可。
四、默认用户名和密码
这是我首次使用Tomcat时遇到的困惑,相信也是很多朋友都会遇到的。就是访问Tomcat首页时,点击“Administration”部分的内容,都会提示需要输入用户名和密码。
其在conf/tomcat-users.xml中设定,默认内容如下:
这里role只有tomcat role1权限的用户,我们要访问“Administration”部分的页面,需添加一个"manager"的权限角色和用户。修改为如下内容:
重新启动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
一、系统环境
引用
操作系统:红旗 DC Server 5.0 for x86_64 SP2
应用软件:Tomcat 5.5、jdk 1.5.0_04(系统自带)
应用软件: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
# 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 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
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
# ./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
# 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
-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
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" />
<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
[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>
# 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
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>
<?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>
<?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