柔中带刚,刚中带柔,淫荡中富含柔和,刚猛中荡漾风骚,无坚不摧,无孔不入!
全部博文(1669)
分类: 系统运维
2011-12-30 18:18:57
一、基础知识
Tomcat 简介
Tomcat是Apache Jakarta的子项目之一,作为一个优秀的开源web应用服务器,全面支持jsp1.2以及servlet2.3规范。因其技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的web应用服务器。
https(Secure Hypertext Transfer Protocol)安全超文本传输协议 简介
https是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层。
它是由Netscape开发并内置于其浏览器中,旨在达到在开放网络(Internet)上安全保密地传输信息的目的。
用于对数据进行压缩和解压操作,并返回网络上传送回的结果。HTTPS实际上应用了Netscape的完全套接字层(SSL)作为HTTP应用层的子层。(HTTPS使用端口443,而不是象HTTP那样使用端口80来和TCP/IP进行通信。)SSL使用40 位关键字作为RC4流加密算法,这对于商业信息的加密是合适的。HTTPS和SSL支持使用X.509数字认证,如果需要的话用户可以确认发送者是谁。。
SSL (Secure Socket Layer)简介
为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程中不会被截取及窃听。
(附)SSL工作原理
SSL协议使用不对称加密技术实现会话双方之间信息的安全传递。可以实现信息传递的保密性、完整性,并且会话双方能鉴别对方身份。不同于常用的http协议,我们在与网站建立SSL安全连接时使用https协议,即采用的方式来访问。
当我们与一个网站建立https连接时,我们的浏览器与Web Server之间要经过一个握手的过程来完成身份鉴定与密钥交换,从而建立安全连接。具体过程如下:
1. 用户浏览器将其SSL版本号、加密设置参数、与session有关的数据以及其它一些必要信息发送到服务器。
2. 服务器将其SSL版本号、加密设置参数、与session有关的数据以及其它一些必要信息发送给浏览器,同时发给浏览器的还有服务器的证书。如果配置服务器的SSL需要验证用户身份,还要发出请求要求浏览器提供用户证书。
3. 客户端检查服务器证书,如果检查失败,提示不能建立SSL连接。如果成功,那么继续。
4. 客户端浏览器为本次会话生成pre-master secret,并将其用服务器公钥加密后发送给服务器。
5. 如果服务器要求鉴别客户身份,客户端还要再对另外一些数据签名后并将其与客户端证书一起发送给服务器。
6. 如果服务器要求鉴别客户身份,则检查签署客户证书的CA是否可信。如果不在信任列表中,结束本次会话。如果检查通过,服务器用自己的私钥解密收到的pre-master secret,并用它通过某些算法生成本次会话的master secret。
7. 客户端与服务器均使用此master secret生成本次会话的会话密钥(对称密钥)。在双方SSL握手结束后传递任何消息均使用此会话密钥。这样做的主要原因是对称加密比非对称加密的运算量低一个数量级以上,能够显著提高双方会话时的运算速度。
8. 客户端通知服务器此后发送的消息都使用这个会话密钥进行加密。并通知服务器客户端已经完成本次SSL握手。
9. 服务器通知客户端此后发送的消息都使用这个会话密钥进行加密。并通知客户端服务器已经完成本次SSL握手。
10. 本次握手过程结束,会话已经建立。双方使用同一个会话密钥分别对发送以及接受的信息进行加、解密。
二、tomcat实现SSL配置
第一步 生成KeyStore
keytool -genkey -alias tomcat -keyalg RSA –keysize 1024 –validity 730 -keystore D:\server.keystore
生成.keystore文件在 用户目录下
输入keystore密码: ************
您的名字与姓氏是什么?
[Unknown]: localhost
您的组织单位名称是什么?
[Unknown]: dept
您的组织名称是什么?
[Unknown]: Inc
您所在的城市或区域名称是什么?
[Unknown]: bj
您所在的州或省份名称是什么?
[Unknown]: bj
该单位的两字母国家代码是什么
[Unknown]: CN
CN=localhost, OU= dept, O= Inc, L=bj, ST=bj, C=CN 正确吗?
[否]: Y
输入的主密码
(如果和 keystore 密码相同,按回车):*************
注意: localhost,是网站的域名或者ip,根据实际情况填写,比如 192.168.0.85 否则会出现证书上的名称无效,或者与站点名称不匹配。
建议:将生成的 server.keystore文件,放到%TOMCAT_HOME%或其子目录中(如:%TOMCAT_HOME%/conf)
(其实放哪里都一样,只是放到%TOMCAT_HOME%里面会方便一些)
第二步 修改server.xml
修改%TOMCAT_HOME%/conf/server.xml
去掉下面SSL HTTP那个注释,修改为如下:
Xml代码
1
2 SSLEnabled="true"
3 maxThreads="150"
4 scheme="https"
5 secure="true"
6 clientAuth="false"
7 sslProtocol="TLS"
8 keystoreFile="/conf/server.keystore"
9 keystorePass="changeit" />
10
11 SSLEnabled="true"
12 maxThreads="150"
13 scheme="https"
14 secure="true"
15 clientAuth="false"
16 sslProtocol="TLS"
17 keystoreFile="/conf/server.keystore"
18 keystorePass="changeit" />
keystoreFile 是server.keystore放置的位置,keystorePass是密码 (默认密码是changeit)
第三步
重启Tomcat,访问地址
(附录:)tomcat的配置文件SSL部分详细说明
配置文件server.xml,SSL部分:
Xml代码
19 – A "Connector" represents an endpoint by which requests are received
20 and responses are returned. Documentation at :
21 Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)
22 Java AJP Connector: /docs/config/ajp.html
23 APR (HTTP/AJP) Connector: /docs/apr.html
24 Define a non-SSL HTTP/1.1 Connector on port 8080
25 –>
26
27 maxThreads="150"
28 minSpareThreads="25"
29 maxSpareThreads="75"
30 enableLookups="false"
31 disableUploadTimeout="true"
32 acceptCount="100"
33 scheme="https"
34 secure="true"
35 clientAuth="false"
36 sslProtocol="TLS"
37 keystoreFile="D:/Tomcat/conf/tomcatKey.keystore"
38 keystorePass="changeit"
39 algorithm="SunX509"
40 />
41