在安全通信中,不得不使用ssl,这样既保证安全,又显得专业.在看了多篇关于tomcat配置ssl的文章后,自己又总结了一下.我使用的是tomcat6.0,配置起来有些许差别.
参考网上文章
Tomcat下双向SSL安全认证
Windwos2000下配置Tomcat 5使用SSL
环境:
linux magic2.01
openssl-0.9.8e
jre1.5.0_05
apache-tomcat-6.0.13
本文目录:
安装openssl
建立ca根证书
建立server证书
配置tomcat支持ssl
建立个人证书
安装openssl
最新版本可以去www.openssl.org ,我用的是openssl-0.9.8e.tar.gz
tar -xzf openssl-0.9.8e.tar.gz
cd openssl-0.9.8e
./configure --prefix=XXXXX --openssldir=XXXXXXXX
(这里prefix是你想安装openssl的地方, openssldir就是你tar开的openssl源码的地方。好象所有的出名点的free software都是这个操行,configure, make , make test, make install, 搞定。)
./make
./make test
./make install
OK, 如果路上没有什么问题的话,搞定。
建立ca根证书
建立一张证书需要三步,1是生成系统私钥,2生成待签名证书,需要输入一些信息,3 生成x509证书,可以自已签名,用来做根证书;也可用其它证书来签名,生成根证书可以信任的证书.
下面是生成根证书
1生成CA私钥
openssl genrsa -out ca/cakey.pem 2048
[color=red]genrsa[生成CA私钥]
-out[生成的私钥的保存路径和名字]
2048[密钥位数] [/color]
2 生成待签名证书
openssl req -new -out ca/careq.csr -key ca/cakey.pem
req[生成待签名证书的选项]
-key[采用的CA私钥的路径]
3 用CA私钥进行自签名
openssl x509 -req -in ca/careq.csr -out ca/cacert.pem -signkey ca/cakey.pem -days 7200
x509[生成x509的CA根证书]
-in[采用的待签名证书的路径]
-out[生成的CA根证书的路径]
-signkey[采用签名的私钥的路径]
-days[有效时间(天)]
建立server证书
因为tomcat为java的web容器,所以在实现ssl时,要用到java的安全机制,所以部分操作是用java的keytool来完成的.
1 生成KeyPair
keytool -genkey -alias tomcat_server -validity 7200 -keyalg RSA -keysize 2048 -keypass 652341 -storepass 652341 -dname " CN=hzvg00001, OU=vg.group, O=unimassystem.inc, L=hangzhou, ST=zhejiang, C=CN" -keystore server/server_keystore
-genkey[生成私钥对的命令]
-alias[为生成的私钥对起个别名]
-validity[密钥有效期]
-keyalg[加密算法]
-keysize[加密位数]
-keypass[密钥保护密码]
-storepass[存储密码]
-dname[别名附加的相关信息] 这里的CN一般要根tomcat服务所在机子的名字一样,也就是hostname
-keystore[密钥存储文件路径]
2 生成待签名证书
keytool -certreq -alias tomcat_server -sigalg MD5withRSA -file server/server.csr -keypass 652341 -keystore server/server_keystore -storepass 652341
-file[生成的待签名证书的路径]
3 用CA私钥进行签名
openssl x509 -req -in server/server.csr -out server/server-cert.pem -CA ca/cacert.pem -CAkey ca/cakey.pem -CAserial ca/ca-cert.srl -CAcreateserial -days 7200
这时便产生了一个服务端证书:server-cert.pem
如果没有-CAcreateserial选项会出现如下错误:
Loading 'screen' into random state - done
Signature ok
subject=/C=CN/ST=shanghai/L=shanghai/O=topfounder/OU=technology/CN=redbeans luo
Getting CA Private Key
ca\ca-cert.srl: No such file or directory
3140:error:02001002:system library:fopen:No such file or directory:.\crypto\bio\{color}
bss_file.c:349:fopen('D:\sslca\ca\ca-cert.srl','rb')
3140:error:20074002:BIO routines:FILE_CTRL:system lib:.\crypto\bio\bss_file.c:351:
4 导入信任的CA根证书到JSSE的默认位置($JDK_HOME/jre/lib/security/cacerts)
keytool -import -v -trustcacerts -storepass 652341 -alias my_ca_root -file ca/cacert.pem -keystore $JAVA_HOME/jre/lib/security/cacerts
这里,如果$JDK_HOME/jre/lib/security/cacerts已经存在,那么会报错:
keytool错误: java.io.IOException: Keystore was tampered with, or password was incorrect
解决办法之一,是将 原cacerts文件删除即可,那样之前导入的信任的CA根证书的配置就都没了,令一个办法是取一个不同与其他导入的根证书的别名,也就是-alias 后面写个不同的名字(导入多个根证书的时候,就要这么做了)。
这一步他会询问:是否将这个根证书设为可信任的,如果不希望提示,加上选项:-noprompt就可以了,默认就是Y(yes)。
5 把CA签名后的server端证书导入keystore
keytool -import -v -trustcacerts -storepass 652341 -alias tomcat_server -file server/server-cert.pem -keystore server/server_keystore
这个步会一个风险,就是你用的keytool不是你刚才导入ca根证书的jdk的,这样的话,会报一个错误。
如果你不理采的话,证书导不进去。你更改alias可以导入进行去,但证书在使用中会出现问题,因为证书的发行者是他自己而不是根证书。
6 查看server端证书
keytool -list -v -keystore $JAVA_HOME/jre/lib/security/cacerts
keytool -list -v -keystore server/server_keystore
配置tomcat支持ssl
修改$TOMCAT_ROOT/conf/server.xml
使用java的ssl,而不是opensll
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="off" />
<Connector protocol="org.apache.coyote.http11.Http11Protocol"
port="8443" minSpareThreads="5" maxSpareThreads="75"
enableLookups="true" disableUploadTimeout="true"
acceptCount="100" maxThreads="200"
scheme="https"
secure="true" SSLEnabled="true"
存储路径
keystoreFile="/rpyca/server/server_keystore"
密码
keystorePass="123456"
是否需要客户端验证
clientAuth="true"
sslProtocol="TLS"/>
建立个人证书
1 生成client私钥
openssl genrsa -out client/client-key.pem 2048
2 生成待签名证书
openssl req -new -out client/client-req.csr -key client/client-key.pem
3 用CA私钥进行签名
openssl x509 -req -in client/client-req.csr -out client/client.crt -signkey client/client-key.pem -CA ca/cacert.pem -CAkey ca/cakey.pem -CAserial ca/ca-cert.srl -CAcreateserial -days 7200
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
5 安装信任的根证书
把D:\sslca\ca\ca-key.pem改名为D:\sslca\ca\ca-key.cer,在client端的IE中使用"工具 'Internet选项 ' 内容 ' 证书 ' 导入"把我们生成的CA根证书导入,使其成为用户信任的CA。
6安装个人证书
把client.p12导入到client端的IE中作为个人证书,导入过程同2.4.5。
启动Tomcat
执行%TCAT_HOME%\bin\startup.bat启动Tomcat
用IE访问Tomcat
在IE浏览器的地址栏中输入https://localhost:8443 ,如果前面的操作都正确的话,应该可以看到Tomcat的欢迎页面。同时状态栏上的小锁处于闭合状态,表示您已经成功地与服务器建立了要求客户端验证的SSL安全连接。
分享到:
相关推荐
安全方面,Tomcat6.0支持SSL/TLS协议,可以通过配置`server.xml`中的`<Connector>`元素来启用HTTPS服务,提供加密的通信。此外,还应注意限制对`conf`目录的访问,以防止配置文件被篡改。 总的来说,Tomcat6.0是一...
以下是对Linux下安装Tomcat 6.0.29的详细步骤,包括账户创建、下载与解压Tomcat、配置环境变量以及启动服务。 **第一步:创建Linux账户** 在Linux中,为了安全性和管理方便,通常会为每个服务创建一个专用的运行...
在Tomcat的`bin`目录下,你可以找到`startup.sh`(在Unix/Linux系统上)或`startup.bat`(在Windows系统上)脚本来启动服务器。相应的,`shutdown.sh`或`shutdown.bat`用于停止Tomcat服务。 4. **配置Tomcat** ...
Linux 6.1 64位系统上的Tomcat 6.0安装手册旨在提供详细的步骤,帮助用户在基于Linux的环境中成功安装和配置Apache Tomcat服务器。Tomcat是一款开源的Java Servlet容器,常用于部署Java Web应用程序。以下是安装过程...
在解压后的"tomcat6.0"文件中,通常会包含以下几个关键部分: - `bin`目录:包含了启动和停止Tomcat的脚本,以及一些管理工具。 - `conf`目录:存放配置文件,如`server.xml`定义了服务器的配置,`context.xml`管理...
Tomcat的安全性和性能可以通过调整配置文件进行优化,例如限制并发连接数、启用SSL加密、设置连接器超时等。同时,定期更新到最新版本可以防止已知的安全漏洞。 总结,Tomcat 6.0是一个强大且灵活的Java Web服务器...
标题中的“tomcat6.0”指的是Apache Tomcat 6.0版本,这是一个开源的Java Servlet容器,主要用于部署和运行Java EE(Enterprise Edition)应用程序,特别是JSP(JavaServer Pages)和Servlet。Tomcat作为轻量级应用...
Apache Tomcat 6.0提供了两种启动方式:通过`startup.bat`(Windows)或`startup.sh`(Unix/Linux)脚本手动启动,或者将其作为Windows服务自动启动。同样,`shutdown.bat`或`shutdown.sh`用于停止服务。在Windows下...
6. **安全管理**:Tomcat6.0的安全管理包括配置用户角色、限制访问权限和设置SSL证书。这些可以通过修改conf/tomcat-users.xml和server.xml中的相关部分来实现。 7. **性能调整**:为了优化Tomcat的性能,可能需要...
3. **安全增强**:在安全性方面,Tomcat 6.0加强了对SSL/TLS的支持,提供了更好的加密和身份验证机制,有助于保护Web应用程序免受攻击。 4. **管理工具**:提供了一个改进的管理界面,使得部署和管理Web应用程序...
5. **配置**:Tomcat的配置主要通过`conf`目录下的文件进行,如`server.xml`定义了服务器的全局设置,`web.xml`是Web应用的部署描述符,定义了应用的组件和服务。 6. **运行与管理**:启动Tomcat可以通过命令行执行...
压缩包中的"tomcat6.0"包含了服务器的所有必要文件,包括bin目录下的可执行脚本,conf目录下的配置文件,webapps目录用于存放Web应用,logs和work目录则分别用于日志和编译后的JSP文件。 总的来说,Apache Tomcat ...
- 使用`bin`目录下的`startup.sh`(Unix/Linux)或`startup.bat`(Windows)脚本来启动Tomcat服务。 - 使用`shutdown.sh`或`shutdown.bat`来停止Tomcat服务。 - 通过访问http://localhost:8080/来检查Tomcat是否正常...
《深入理解Tomcat6.0绿色版:开启Web服务之旅》 Apache Tomcat是一款广泛应用的开源免费Web服务器,尤其在Java EE应用服务器领域占据着重要地位。Tomcat 6.0是其较早的一个稳定版本,以其轻量级、易用性和高效的...
- 在Tomcat的bin目录下,运行`startup.bat`(Windows)或`./startup.sh`(Linux/Unix)启动Tomcat。 - 使用`shutdown.bat`或`./shutdown.sh`停止Tomcat服务。 5. **部署Web应用**: - 将WAR文件拷贝到`webapps`...
Tomcat 6.0支持多种安全机制,包括基本认证、FORM认证、SSL加密等。通过`conf/tomcat-users.xml`配置用户和角色,结合`conf/server.xml`中的 Realm 配置,可以实现细粒度的权限控制。 7. **性能优化** Tomcat 6.0...
今天,我们将讨论在LINUX环境下配置TOMCAT和WEBLOGIC服务器的SSL协议。 TOMCAT下的SSL配置 在TOMCAT服务器下,配置SSL协议需要生成服务端证书和客户端证书。下面我们将一步一步地介绍这两个过程。 生成服务端证书...
- **启动与停止**:通过bin目录下的startup.sh(Unix/Linux)或startup.bat(Windows)脚本启动Tomcat,使用shutdown.sh或shutdown.bat停止服务。 **3. 应用部署** - **WAR文件部署**:将Java Web应用打包成WAR...
这个“apachetomcat6.0.rar”压缩包包含了Tomcat 6.0的安装程序,对于需要在服务器上搭建Java Web环境的开发者或者系统管理员来说非常实用。 首先,让我们详细了解Tomcat。Apache Tomcat是Apache软件基金会的项目之...
其中,`bin`目录包含了启动和停止Tomcat的脚本,如`startup.sh`(适用于Unix/Linux系统)和`startup.bat`(适用于Windows系统)。`conf`目录包含了服务器的配置文件,如`server.xml`,它是Tomcat的主要配置文件,...