一、基础知识
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://ip:port/
的方式来访问。
当我们与一个网站建立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,根据实际情况填写,比如 www.baidu.com
192.168.0.85
否则会出现证书上的名称无效,或者与站点名称不匹配。
建议:将生成的
server.keystore文件,放到%TOMCAT_HOME%或其子目录中(如:%TOMCAT_HOME%/conf)
(其实放哪里都一样,只是放到%TOMCAT_HOME%里面会方便一些)
第二步 修改server.xml
修改%TOMCAT_HOME%/conf/server.xml
去掉下面SSL HTTP那个注释,修改为如下:
Xml代码
<Connector port="8443" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"
SSLEnabled="true"
maxThreads="150"
scheme="https"
secure="true"
clientAuth="false"
sslProtocol="TLS"
keystoreFile="/conf/server.keystore"
keystorePass="changeit" />
<Connector port="8443"
protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"
SSLEnabled="true" maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="/conf/server.keystore" keystorePass="changeit" />
keystoreFile
是server.keystore放置的位置,keystorePass是密码 (默认密码是changeit)
第三步
重启Tomcat,访问地址https://ip:8443/
(附录:)tomcat的配置文件SSL部分详细说明
配置文件server.xml,SSL部分:
Xml代码
<!-- A "Connector" represents an endpoint by which requests are received
and responses are returned. Documentation at :
Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)
Java AJP Connector: /docs/config/ajp.html
APR (HTTP/AJP) Connector: /docs/apr.html
Define a non-SSL HTTP/1.1 Connector on port 8080
-->
<Connector port="8443" maxHttpHeaderSize="8192"
maxThreads="150"
minSpareThreads="25"
maxSpareThreads="75"
enableLookups="false"
disableUploadTimeout="true"
acceptCount="100"
scheme="https"
secure="true"
clientAuth="false"
sslProtocol="TLS"
keystoreFile="D:/Tomcat/conf/tomcatKey.keystore"
keystorePass="changeit"
algorithm="SunX509"
/>
<!-- A "Connector" represents an
endpoint by which requests are received and responses are
returned. Documentation at : Java HTTP Connector:
/docs/config/http.html (blocking & non-blocking) Java AJP
Connector: /docs/config/ajp.html APR (HTTP/AJP) Connector:
/docs/apr.html Define a non-SSL HTTP/1.1 Connector on port
8080 --> <Connector port="8443" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true" acceptCount="100"
scheme="https" secure="true" clientAuth="false" sslProtocol="TLS"
keystoreFile="D:/Tomcat/conf/tomcatKey.keystore" keystorePass="changeit"
algorithm="SunX509" />
属性说明:
port: 这个port属性(默认值是8443)是
TCP/IP端口数码,Tomcat在其上监听安全连接。你可以把它更改成任何你愿意要的数值(如默认的https通信,数目是443)。不过,在许多操
作系统中,要想在比1024小的端口数码上运行Tomcat,需要特殊的设置(它超出了这个文档资料的范围)。
redirectPort: 如果你在这里更改端口数值,你还必须更改在non-SSL连接
器上的redirectPort 这个属性特定的值。这允许Tomcat自动地redirect那些试图访问有安全限制页面的用户,指明根据
Servlet 2.4 Specification要求,SSL是必需的
clientAuth: 如果你想要Tomcat要求所有的SSL客户在使用这个
socket时出示用户认证书,把这个值设定为 true 。如果你想要Tomcat要求出示用户认证书,但是如果没有认证书也可以,
就把这个值设定为want 。
keystoreFile: 如果你产生的keystore文件不在Tomcat期望的默认
地方(一个叫做.keystore 的文件在Tomcat运行的主目录),就添加这个属性。你可以指定一个绝对路径名称,
或者一个由$CATALINA_BASE环境变量而派生的相对路径名称。
keystorePass: 如果你使用一个不同的keystore(以及认证书)密码,而
不是Tomcat期望的密码 (就是changeit),添加这个元素。
keystoreType: 如果使用一个PKCS12
keystore的话,就添加这个element。 有效的值是JKS 和 PKCS12
sslProtocol: 要在这个socket上被使用的加密/解密协定。如果你在使用
Sun的JVM,我们不提倡更改 这个值。据报道,TLS协定的IBM's 1.4.1 实现与一些通用的浏览器不兼容。 如果是这样,就使用value
SSL
ciphers: 这个socket允许使用的由逗号分隔开的加密密码列单。默认的情况下,
任何可用的密码都允许被使用。
algorithm: 可用的X509算法。默认是Sun的实现( SunX509 )。
对于IBM JVMs,你应该使用值 IbmX509。对于其他卖主,查阅JVM文档资料来 找正确的值。
truststoreFile: 用来验证用户认证书的TrustStore文件。
truststorePass: 访问TrustStore的密码。默认值就是
keystorePass的值。
truststoreType: 如果你在使用与KeyStore不同格式的
TrustStore,添加这个元素。 合法的值是JKS和PKCS12
keyAlias: 如果 keystore 里面有多个
key,你可以为用这个选项为加入的 key 起一个名字。 如果没有指定名字,使用时 keystore 内的第一个 key 将会被使用。
相关推荐
https ssl Tomcat中实现https安全连接与SSL配置https ssl Tomcat中实现https安全连接与SSL配置https ssl Tomcat中实现https安全连接与SSL配置https ssl Tomcat中实现https安全连接与SSL配置
Tomcat6配置使用SSL双向认证
Tomcat5.5配置SSL Tomcat5.5配置SSL Tomcat5.5配置SSL Tomcat5.5配置SSL
apache Tomcat配置SSL(https)步骤
Tomcat 开启基于https的SSL配置
解决tomcat配置ssl错误的解决办法,不一定有用,只是一个备份。不需要分就是因为不一定能帮到谁。
Tomcat配置SSL全过程
tomcat7单双向SSL配置,本人亲测,并附有截图代码
Tomcat 配置SSL完美 https可以正常使用 小程序调用Tomcat 配置SSL完美 https可以正常使用 小程序调用Tomcat 配置SSL完美 https可以正常使用 小程序调用
关于tomcat 的ssl配置,
nginx和tomcat配置SSL和负载均衡配置,
打开Tomcat根目录下的/conf/server.xml,找到如下配置段,修改如下: maxThreads="150" scheme="https" secure="true" clientAuth="true" sslProtocol="TLS" keystoreFile="C:/tmp/tomcat.keystore" ...
https原理及tomcat配置https方法;SSL加密传输;请求路径https://...;客户端需安装证书...
apache和tomcat整合配置 ssl
很多人经常在网上问怎么在TOMCAT下配置SSL,终于在网上找到一个可以用的教程,与大家共享一下。
tomcat6.0.6进行ssl配置,tomcat6,ssl配置
tomcat6下配置ssl双向验证,通过jdk工具生成证书文件。
Tomcat 安装SSL证书,Tomcat安装https证书 简单三步教您配置Tomcat 安装SSL证书 压缩包内有 server.xml 、web.xml 示例文件,一看就会,一做就成!
有关于Tomcat配置ssl证书和TOMCAT的根目录修改。然后可以用https+域名直接访问工程。。。。。。。。。。。。。。。。。。。
tomcat 配置ssl加密通讯tomcat 配置ssl加密通讯tomcat 配置ssl加密通讯