配置tomcat6使用SSL |
当用到有时需要ssl,有时网页又不需要时配置到web.xml里
<security-constraint> <web-resource-collection> <web-resource-name>SSL Resource</web-resource-name> <url-pattern>/login.jsp</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint>
-----------------------
内容:
1.Tomcat简介
2.SSL(Server Socket Layer)简介
3.SSL工作原理
4.配置tomcat6 使用SSL
5.结论
----------------------
目前介绍配置tomcat6使用单向SSL认证(只验证服务器证书)的资料很多,过程也比较简单。但是由于配置其使用双向SSL认证 (还需要验证客户端个人证书)除了需要CA对证书签名外,还要从CA获得个人证书。有关这一问题,目前结合具体web服务器来讲解如何操作的资料很少。作 者通过摸索借助一些SSL工具在本地实现了简单的CA功能,并在此基础上配置成功了Tomcat的双向认证,希望能把其中的一些经验与大家共享。不过受本 人水平所限,文中难免会有错误与不当之处,敬请大家谅解。
1.Tomcat简介
Tomcat是Apache Jakarta的子项目之一,作为一个优秀的开源web应用服务器,全面支持jsp1.2以及servlet2.3 规范。因其技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的web应用服务器。
2.SSL(Server Socket Layer)简介
在网络上信息在源-宿的传递过程中会经过其它的计算机。一般情况下,中间的计算机不会监听路过的信息。但在使用网上银行或者进行信用卡交易的时候有可能 被监视,从而导致个人隐私的泄露。由于Internet和Intranet体系结构的原因,总有某些人能够读取并替换用户发出的信息。随着网上支付的不断 发展,人们对信息安全的要求越来越高。因此Netscape公司提出了SSL协议,旨在达到在开放网络(Internet)上安全保密地传输信息的目的, 这种协议在WEB上获得了广泛的应用。 之后IETF(www.ietf.org)对SSL作了标准化,即RFC2246,并将其称为TLS (Transport Layer Security),从技术上讲,TLS1.0与SSL3.0的差别非常微小。
3.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握手。
本次握手过程结束,会话已经建立。双方使用同一个会话密钥分别对发送以及接受的信息进行加、解密。
4.配置tomcat6 使用SSL
4.1 用到的软件包
tomcat6.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(redhat企业版自带openssl,所以不用我们安装,目录在/usr/bin/openssl)
用途:用来产生CA证书、签名并生成IE可导入的PKCS#12格式私钥。
下载:http://www.openssl.org/source/
openssl-0.9.8a.tar.gz
gunzip openssl-0.9.8a.tar.gz
tar -xvf openssl-0.9.8a.tar
生成文件夹openssl-0.9.8a
阅读它的README文档,说如果要安装在unix版本系统,就看它的INSTALL文档。
看了它的INSTALL文档,按照如下步骤安装即可,注意用管理员权限操作
$ ./config
$ make
$ make test
$ make install
安装目录为/usr/local/ssl/文件夹
4.2 建立自己的CA
4.2.1 建立工作目录
#cd /usr/local/ssl/bin
#mkdir ca
4.2.2 生成CA私钥以及自签名根证书
4.2.2.1 生成CA私钥
#cd /usr/local/ssl/bin
#./openssl genrsa -out ca/ca-key.pem 1024
因为是自带的,所以只要这一步。而且无须带./。
openssl genrsa -out ca/ca-key.pem 1024
Generating RSA private key, 1024 bit long modulus
.............++++++
...++++++
e is 65537 (0x10001)
此时在/usr/local/ssl/bin/ca目录下面生成文件
ca-key.pem
4.2.2.2 生成待签名证书
#./openssl req -new -out ca/ca-req.csr -key ca/ca-key.pem
结果
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----(下面是密钥信息,可自行输入,不过服务器与客户端要一至)
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:anhui
Locality Name (eg, city) []:hefei
Organization Name (eg, company) [Internet Widgits Pty Ltd]:ustc
Organizational Unit Name (eg, section) []:teamtech
Common Name (eg, YOUR name ,servername :10.56.90.171 ) []:10.56.90.171
Email Address []:liuqing@mail.ustc.edu.cn
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:liuqing@mail.ustc.edu.cn
string is too long, it needs to be less than 20 bytes long
A challenge password []:liuqing
An optional company name []:teamtech
此时在/usr/local/ssl/bin/ca目录下面有两个文件
ca-key.pem ca-req.csr
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
结果
Signature ok
subject=/C=CN/ST=anhui/L=hefei/O=ustc/OU=teamtech/CN=10.56.90.171/emailAddress=liuqing@mail.ustc.edu.cn
Getting Private key
此时在/usr/local/ssl/bin/ca目录下面有三个文件
ca-cert.pem ca-key.pem ca-req.csr
4.3 设置tomcat6
在本文中用符号"%JDK_HOME%"来表示JDK的安装位置,用符号"%TCAT_HOME%" 表示Tomcat的安装位置。
本机的jdk下载jdk6解压可自行安装(本机目录/usr/java/jdk6/bin/)。
#dpkg -L sun-j2sdk1.6可以看到JDK的目录如下
/usr/lib/j2sdk1.5-sun/bin
同样
#dpkg -L tomcat6
可以得到tomcat6的目录结构
/var/lib/tomcat6
4.3.1建立工作目录 (可自行建目录,只是在后边的语句中,要用到这个目录时别搞错)
#cd /usr/lib/j2sdk1.5-sun/bin
#mkdir server
4.3.2 生成server端证书
4.3.2.1 生成KeyPair
#cd /usr/java/jdk1.6/bin
#./keytool -genkey -alias tomcat_server -validity 365 -keyalg RSA -keysize 1024 -keypass changeit -storepass changeit -dname "cn=localhost, ou=department, o=company, l=hefei, st=anhui, c=CN" -keystore server/server_keystore
该程序在/usr/lib/j2sdk1.5-sun/bin/server目录下生成文件
server_keystore
4.3.2.2 生成待签名证书
#cd /usr/lib/j2sdk1.5-sun/bin
#./keytool -certreq -alias tomcat_server -sigalg MD5withRSA -file server/server.csr -keypass changeit -keystore server/server_keystore -storepass changeit
该程序在/usr/lib/j2sdk1.5-sun/bin/server目录下生成文件
server.csr
4.3.2.3 用CA私钥进行签名
#cd /usr/local/ssl/bin
下载其他的openssl源文件中拷贝ca-cert.srl到我机器ca目录下面
#./openssl x509 -req -in /usr/lib/j2sdk1.5-sun/bin/server/server.csr -out /usr/lib/j2sdk1.5-sun/bin/server/server-cert.pem -CA ca/ca-cert.pem -CAkey ca/ca-key.pem -days 365
结果
Signature ok
subject=/C=CN/ST=anhui/L=hefei/O=company/OU=department/CN=localhost
Getting CA Private Key
4.3.2.4 导入信任的CA根证书到JSSE的默认位置(%JDK_ROOT %/jre/security/cacerts)
#cd /usr/lib/j2sdk1.5-sun/bin
#./keytool -import -v -trustcacerts -storepass changeit -alias my_ca_root -file /usr/local/ssl/bin/ca/ca-cert.pem -keystore /usr/lib/j2sdk1.5-sun/jre/lib/security/cacerts
结果
Owner: EMAILADDRESS=liuqing@mail.ustc.edu.cn, CN=liuqing, OU=teamtech, O=ustc, L=hefei, ST=anhui, C=CN
发照者: EMAILADDRESS=liuqing@mail.ustc.edu.cn, CN=liuqing, OU=teamtech, O=ustc, L=hefei, ST=anhui, C=CN
序号: c922365c09372e06
有效期间: Tue Dec 27 16:20:22 CST 2005 至: Wed Dec 27 16:20:22 CST 2006
认证指纹:
MD5: 44:EA:7F:F7:ED:B8:8B:C7:47:EE:49:E0:D5:AB:2E:B6
SHA1: AA:FC:76:B3:F1:AD:07:A5:1D:3F:16:C7:40:4D:25:2F:F2:2F:F1:A7
信任这个认证? [否]: 是
认证已添加至keystore中
[正在存储 /usr/lib/j2sdk1.5-sun/jre/lib/security/cacerts]
4.3.2.5 把CA签名后的server端证书导入keystore
#cd /usr/lib/j2sdk1.5-sun/bin
#./keytool -import -v -trustcacerts -storepass changeit -alias tomcat_server -file server/server-cert.pem -keystore server/server_keystore
密码与别名要与前边我们定义的一至。
运行结果
认证回复已安装在 keystore中
[正在存储 server/server_keystore]
4.3.2.6 查看server端证书
#./keytool -list -keystore /usr/lib/j2sdk1.5-sun/jre/lib/security/cacerts
#./keytool -list -keystore server/server_keystore
4.3.3 修改server.xml使Tomcat支持SSL
首先找到以下内容,去掉对其的注释。如果配置Tomcat不验证客户身份,可以设置
clientAuth="false"。
< Connector
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" debug="0" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="/usr/share/tomcat6/conf/server_keystore" keystorePass="changeit" />
要验证时用true.
位置和密码要正确
然后把文件/usr/lib/j2sdk1.5-sun/bin/server/server_keystore复制到目录/usr/share/tomcat6/conf/下。
4.4 在IE中安装个人证书
4.4.1 建立工作目录
#cd /usr/local/ssl/bin
#mkdir client
4.4.2 生成client私钥并用CA私钥签名
4.4.2.1 生成client私钥
#cd /usr/local/ssl/bin
#./openssl genrsa -out client/client-key.pem 1024
运行结果
Generating RSA private key, 1024 bit long modulus
.......................................................++++++
...............................++++++
e is 65537 (0x10001)
4.4.2.2 生成待签名证书
#./openssl req -new -out client/client-req.csr -key client/client-key.pem
运行结果
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:anhui
Locality Name (eg, city) []:hefei
Organization Name (eg, company) [Internet Widgits Pty Ltd]:ustc
Organizational Unit Name (eg, section) []:teamtech
Common Name (eg, YOUR name) []:liuqing
Email Address []:liuqing@mail.ustc.edu.cn
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:liuqing
An optional company name []:teamtech
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
运行结果
Signature ok
subject=/C=CN/ST=anhui/L=hefei/O=ustc/OU=teamtech/CN=liuqing/emailAddress=liuqing@mail.ustc.edu.cn
Getting Private key
Getting CA Private Key
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
Enter Export Password:liuqing
Verifying - Enter Export Password:liuqing
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 5
#cd /etc/init.d/
#./tomcat6 start
4.5.2 用IE访问Tomcat6
在IE浏览器的地址栏中输入https://localhost:8443,如果前面的操作都正确的话,应该可以看到Tomcat的欢迎页面。同时状态栏上的小锁处于闭合状态,表示您已经成功地与服务器建立了要求客户端验证的SSL安全连接。
5 结论
以上我们实现了为tomcat6配置要求客户端验证的SSL的全过程。对于其它类型的服务器,例如Apache, Netscape Enterprise Server, Websphere,Weblogic等,一般只是在服务器端保存证书的方式略有不同,但它们的原理都是类似的,配置时可以在本文中办法的基础上做出相应 的调整。
如果只是想放开8443端口
tomcat.keystore,默认密码password
<Connector protocol="org.apache.coyote.http11.Http11NioProtocol"
port="8443" enableLookups="true" disableUploadTimeout="true"
maxThreads="8000" minSpareThreads="500" maxSpareThreads="5000" acceptCount="12000"
scheme="https" secure="true" SSLEnabled="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="tomcat.keystore"
keystorePass="password"/>
相关推荐
在 Linux 环境中设置 Tomcat 支持 SSL,使用 Keytool 生成安全密钥。本文档总结了在 CentOS release 5.7 系统上使用 JDK 1.6.0_30 和 Tomcat 6.0.26 的设置过程。 一、生成认证文件 使用 Keytool 生成服务器密钥,...
在Linux环境下,构建一个基于Apache2和Tomcat7.0的SSL集群是一项关键任务,它涉及到网站的安全性和负载均衡。Apache作为前端服务器处理HTTPS请求,而Tomcat则作为后端应用服务器处理Java应用。以下是对这个配置过程...
以上就是Tomcat SSL认证设置及证书自动生成的完整流程,包括了使用OpenSSL和keytool生成证书、在Tomcat中配置SSL以及在客户端浏览器导入证书的详细步骤。这个过程中,安全性和合规性是至关重要的,因为自签发的证书...
【标题】:Tomcat 6在Linux环境下的安装与配置 Tomcat 6是一款流行的开源Java Servlet容器,用于运行Web应用程序,尤其是基于Java的Web应用。Linux作为一款稳定性极强的操作系统,是许多服务器的首选平台。在Linux...
LINUX下TOMCAT及WEBLOGIC下SSL配置手册 SSL(Secure Sockets Layer)是一种安全协议,用于在Web服务器和浏览器之间进行加密通讯。今天,我们将讨论在LINUX环境下配置TOMCAT和WEBLOGIC服务器的SSL协议。 TOMCAT下的...
1. **安全配置**: 通过修改`server.xml`中的`<Connector>`标签,可以设置SSL/TLS连接,增强安全性。 2. **性能调优**: 可以调整JVM参数,如增大堆内存(`-Xms`和`-Xmx`),优化GC策略,以及配置线程池大小等。 **七...
Linux下Tomcat的安装配置是Java开发者在服务器端部署应用程序时必须掌握的一项基本技能。Tomcat是一款开源的、轻量级的Java应用服务器,主要用于执行Servlet和JavaServer Pages(JSP)应用程序。以下是对Tomcat在...
https ssl Tomcat中实现https安全连接与SSL配置https ssl Tomcat中实现https安全连接与SSL配置https ssl Tomcat中实现https安全连接与SSL配置https ssl Tomcat中实现https安全连接与SSL配置
8. **安全设置**:确保为Tomcat配置了适当的访问控制,限制不必要的网络访问,并且使用强壮的密码保护管理界面。还可以配置SSL/TLS,实现HTTPS通信,增强数据传输的安全性。 9. **性能优化**:在高负载环境中,可能...
在实际使用过程中,根据应用需求和服务器性能,可能需要进一步优化Tomcat的配置,例如调整线程池大小、设置JVM内存、启用AJP协议等。在运维过程中,持续监控系统资源使用情况,及时发现并解决问题,将有助于保持服务...
jvisualvm 远程访问 Linux ...使用 jvisualvm 远程访问 Linux 环境中的 Tomcat 需要安装和配置 jdk 和 Tomcat,然后使用 jvisualvm 的 JMX 方法或 jstatd 方法进行监控,最后添加 Visual GC 插件以获取更多的监控信息。
Apache Tomcat7是一款广泛应用的开源Java Servlet容器,用于部署和运行Java Web应用程序。...在实际应用中,你可能还需要根据具体需求调整内存设置、配置SSL、优化性能等方面,确保Tomcat能够高效、稳定地运行。
6. **启动和管理Tomcat**:在Linux中,可以使用`bin/startup.sh`和`bin/shutdown.sh`脚本来启动和停止Tomcat。为了方便,可以创建systemd服务单元文件,实现开机启动和系统服务管理。 7. **验证安装**:启动Tomcat...
标题“Tomcat SSL解决方案”指的是在Apache Tomcat服务器上配置SSL(Secure Sockets Layer)或其更新版本TLS(Transport Layer Security)的过程,以实现安全的数据传输。SSL/TLS是网络通信中广泛使用的加密协议,...
在Linux环境中使用Tomcat 7.0,除了基本的安装和配置外,还需要了解一些进阶技巧,如调整JVM参数以优化性能、使用连接池管理数据库连接、配置SSL支持以启用HTTPS、以及集成其他Java EE组件等。理解这些概念和实践将...
### Tomcat配置SSL详解 #### 一、引言 随着互联网技术的发展,数据安全成为企业和个人用户关注的重点。为了确保Web应用的数据传输安全,越来越多的应用采用HTTPS协议来替代传统的HTTP协议。而要实现这一目标,就...
Tomcat提供了多种安全配置选项,例如,SSL/TLS加密、访问控制、日志管理等,以帮助管理员配置和管理Tomcat的安全性。 Linux平台Tomcat的安全加固是一个复杂的过程,需要管理员具备丰富的安全知识和经验,以确保...
### Linux下Nginx+Tomcat整合的安装与配置详解 在现代的Web服务器架构中,Nginx作为高性能的反向代理服务器和负载均衡器,常被用来与Tomcat等应用服务器配合使用,以提高网站的响应速度、稳定性和安全性。本文将...
【标题】:“Tomcat 8.0在Linux环境下的配置与管理” 【描述】:Tomcat 8.0是Apache软件基金会的Java Servlet容器,它实现了Java EE Web应用程序的规范,如Servlet和JSP。在Linux操作系统上部署和运行Tomcat 8.0,...
这个压缩包文件"tomcat8-8.5.35.tar.gz"包含了Tomcat 8.5.35的所有组件和必要的配置文件,供用户在Linux环境下部署和管理Java Web应用程序。 首先,我们需要了解Tomcat的基本结构。Tomcat的核心组件包括Catalina...