如何配置Tomcat以支持SSLWord格式文档下载.docx
《如何配置Tomcat以支持SSLWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《如何配置Tomcat以支持SSLWord格式文档下载.docx(14页珍藏版)》请在冰豆网上搜索。
在双方SSL握手结束后传递任何消息均使用此会话密钥。
这样做的主要原因是对称加密比非对称加密的运算量低一个数量级以上,能够显著提高双方会话时的运算速度。
8.客户端通知服务器此后发送的消息都使用这个会话密钥进行加密。
并通知服务器客户端已经完成本次SSL握手。
9.服务器通知客户端此后发送的消息都使用这个会话密钥进行加密。
并通知客户端服务器已经完成本次SSL握手。
10.本次握手过程结束,会话已经建立。
双方使用同一个会话密钥分别对发送以及接受的信息进行加、解密。
2、Java环境配置
2.1JSSE:
JavaSSLextension
用来支持Java程序的SSL。
2.2Keystore
Java把密钥、证书等都放到一个文件中,并且一个文件可以放多个密钥对和证书信息,并用别名alias来区分不同的密钥和证书,存放这些信息的文件叫做keystore。
2.3Keytool
JDK自带的用于管理keystore的工具,具有密钥生成、导入、导出,证书生成、导入、导出等强大的功能。
2.4安装配置
确定已安装有JDK1.2以上版本(java-version);
如果你的机器安装了jdk1.4以上版本(集成了SSL、keystore和keytool),则可略过下面的步骤。
Ø
下载JSSE,URL:
(注意,JDK1.4以上版本已经集成JSSE了,不需要再下载),一般来说都只能download全球版本(还有个版本是美国/加拿大版本,加密位数没有限制);
安装JSSE,主要是把JSSE包内的lib/*.jar拷贝到JAVA_HOME/jre/lib/ext/下,并且加入到CLASSPATH中(这一步很重要);
编辑JAVA_HOME/jre/lib/security/java.security文件,主要是添加:
security.provider.1=sun.security.provider.Sun(一般系统本来就有这一行)
security.provider.2=.ssl.internal.ssl.Provider(注意数字2应该是你的系统原有的最大provider数再加一,不一定是2;
但一般把它的优先级设为2,而改其它的)
确定你的系统有下面文件的其中一个:
1)JAVA_HOME/jre/lib/security/jssecacerts或者
2)JAVA_HOME/jre/lib/security/cacerts
3、申请服务器证书过程
申请服务器证书过程如下:
建立保存证书相关信息的目录
如:
e:
\myServerCert。
在dos窗口中敲入以下命令生成keystore文件,如图一所示
%java_home%\bin\keytool-genkey-aliastomcatTest-keyalgRSA-size2048-keystoree:
\myServerCert\serverKey.keystore
说明:
将提示您输入保护keystore的密码,至少为六位。
注意问题:
姓氏可输入域名,中国的国家代码是:
CN
-liastomcatTest中的tomcatTest为别名可以任意输入
请到e:
\myServerCert目录下确认是否生成文件serverKey.keystore
没有-size2048的指定,默认产生的是2048位的密钥对
图一
产生certificatesignaturerequest(CSR)用来向CA颁发机构申请有效的服务器证书
%java_home%\bin\keytool–certreq-keyalgRSA-aliastomcatTest-filee:
\myServerCert\certreq.csr-storepasslxz2003-keystoree:
命令行的说明:
-aliastomcatTest在生成.keystore的别名
-storepass访问.keystore的密码
-filecertreq.csr生成证书请求存放的文件
在e:
\myServerCert目录下找到certreq.csr文件用文本编辑器(如notepad.exe、ultraedit.exe)打开(注意千万不要改变其中的内容或用word等带有一定格式的字处理软件编辑或存储以上信息。
)文件内容类似如下:
-----BEGINNEWCERTIFICATEREQUEST-----
MIIBqjCCARMCAQAwajELMAkGA1UEBhMCQ04xEjAQBgNVBAgTCWd1YW5nZG9u
c2hlbnpoZW4xDzANBgNVBAoTBmJ5dHRlcjEPMA0GA1UECxMGYnl0dGVyMRIwEAY
MC4wLjEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALKNsefgVD4KhkgKfY
PP7ctq4wMqR807Q+joeqqu78hwD4Dd8I4R7Fg6pl6GGMhuOVG+s7j59Qf+s9pdUM/Sj5ex
IM5skhiYSsIgsDWMY/mMl2u212AeNKxR2bzRrWtT0OUv1yHvCmE6CmifqKce51R3Ag
BgkqhkiG9w0BAQQFAAOBgQBOq79Rhmt2yo1B2ezUBAv6ieyMLGvYxDID/+SU8UpKw0
rpdpPEQjOPKDnQW1gXyU5zxheWMCh7K4p/r2NNf2cvzs3hGvESwx2/cjDo2q246EoZqy/
LfaUqDbvqCEVS29Z/0tL+h6GEcsQU+/P6wVvOZ0MFA==
-----ENDNEWCERTIFICATEREQUEST-----
登陆到CFCA网站提交证书请求,下载证书
得WebServer证书的参考号和授权码后,访问CFCA统一下载平台(生产系统
进入界面后,如果没有下载CA证书链的话,可以在该页面上先点击下载证书链(详细介绍见本章4.2),然后点击“Web服务器证书下载”
选择“接受此协议”进入下载界面,输入参考号和授权码,并在“选项”中选择返回的证书的数据格式。
例如选择DER(默认的方式),把前面得到的PKCS#10格式证书请求(certreq.csr中的内容)粘贴到下面的文本框。
提交该表单,证书将被产生并返回。
保存证书到指定目录,证书申请完成
5、安装下载CFCA测试证书链
在在证书下载平台(测试系统:
http:
//210.74.41.87/,生产系统
下载根证书链(将CFCAROOTCA及CFCAOPERATIONCA2下的内容分被保存为文件),即获得b_Cert.zip
或者直接在CFCA网站上下载证书链(选择APACHE用户下载):
解压b_Cert.zip(生产系统)后,可以看到文件Root_CA.cer,Operation_CA2.cer。
解压b_Tcerts.zip(测试系统)后,可以看到文件CFCARCA.cer,CFCATESTCA.cer。
以生产系统为例:
1744307125
导入可信任的根证书到你的.keystore文件中
%java_home%\bin\keytool-import-aliasroot–storepasschangeit-keystore
%java_home%\jre\lib\security\cacerts-trustcacerts-fileC:
\Downloads\b_Tcerts\Root_CA.cer(如果是测试系统就是CFCARCA.cer)
导入可信任的中级证书到你的.keystore文件中
%java_home%\bin\keytool-import-aliasca2–storepasschangeit-keystore
%java_home%\jre\lib\security\cacerts-trustcacerts-fileC:
\Downloads\b_Tcerts\Operation_CA2.cer(如果是测试系统就是CFCATESTCA.cer)
导入刚申请的服务器证书到你的.keystore文件中
%java_home%\bin\keytool-import-aliastomcatTest-storepasslxz2003-keystoree:
\myServerCert\serverKey.keystore-trustcacerts-filee:
\myServerCert\servercert.cer
注意:
-storepass、-keystore后面的参量与导入CA证书的时候不同!
!
验证keystore中的keypairs和CA的有效性
%java_home%\bin\keytool-list–v-aliastomcatTest–storepasslxz2003-keystoree:
屏幕输出如下,图十。
图十
6、配置服务器(TOMCAT)开启SSL服务
6.1修改tomcat配置文件server.xml
打开TOMCAT安装目录的\conf\server.xml文件找到如下文本,取消注释,添加下面的红色标注内容:
<
!
--DefineaSSLCoyoteHTTP/1.1Connectoronport8443-->
ConnectorclassName="
org.apache.coyote.tomcat4.CoyoteConnector"
port="
8443"
minProcessors="
5"
maxProcessors="
75"
enableLookups="
true"
acceptCount="
100"
debug="
0"
scheme="
https"
secure="
useURIValidationHack="
false"
disableUploadTimeout="
>
FactoryclassName="
org.apache.coyote.tomcat4.CoyoteServerSocketFactory"
clientAuth="
protocol="
TLS"
keystoreFile="
\myServerCert\serverKey.keystore"
keystorePass="
证书库密码"
/>
/Connector>
TOMCAT5.5按照如下配置:
Connectorport="
maxHttpHeaderSize="
8192"
maxThreads="
150"
minSpareThreads="
25"
maxSpareThreads="
enableLookups="
acceptCount="
clientAuth="
sslProtocol="
truststoreFile="
H:
\cfcara\trust.keystore"
——证书链文件,相当于前文的cacerts文件。
truststorePass="
证书链文件密码"
keystoreFile="
\cfcara\serverssl.keystore"
——服务器证书文件,
——相当于前文的serverKey.keystore文件
keystorePass="
服务器证书文件密码"
>
<
由于tomcat不同版本在配置服务器证书的部分有可能有不同,所以把我们已知的tomcat版本配置的情况补充在附录,作为参考。
:
要求客户端必须出示证书,双向SSL;
want"
客户端可以出示证书也可以选择不出示证书,单双向SSL;
客户端无须出示证书,单向SSL。
6.2测试服务器证书是否成功安装
重新启动TOMCAT,打开IE浏览器在地址栏内输入:
https:
//127.0.0.1:
8443/index.jsp出现如下页面表示TOMCAT服务器证书配置成功,图十一
图十一
圈选部分双击可显示证书信息。
如果在TOMCAT的server.xml配置中将clientAuth="
改为“true”,则客户端必须申请客户端证书,如没有客户端证书则被拒绝访问(最好设置为true)显示如下页面,图十二。
图十二
7附录
由于tomcat不同版本在配置服务器证书的部分有可能有不同,所以把我们已知的tomcat版本配置的情况补充在此,作为参考。
7.1Tomcat6.0SSL的配置
1.参考:
Tomcat6.0自带的文档docs/ssl-howto.html,详细介绍了配置过程。
2.目的:
以下详细描述配置过程,仅作为备忘录。
3.备忘录:
Step1,安装tomcat6.0.18,此为当前最新版本,需JDK5.0或以上。
lJDK安装后,可以在命令行下使用如下命令检测是否成功。
C:
\DocumentsandSettings\new>
java-version
javaversion"
1.6.0_10"
Java(TM)SERuntimeEnvironment(build1.6.0_10-b33)
JavaHotSpot(TM)ClientVM(build11.0-b15,mixedmode,sharing)
看到以上蓝色信息,则表示JDK安装配置成功。
lTomcat的运行需要配置JDK_HOME和JRE_HOME环境变量,JRE_HOME默认等于JDK_HOME的值。
Step2,创建服务器端certificatekeystore和自签名certificate。
在命令行下使用如下命令:
keytool-genkey-aliasmykey-keyalgRSA-keystoreserver.keystore
输入keystore密码:
123456
再次输入新密码:
您的名字与姓氏是什么?
[Unknown]:
dinstone
您的组织单位名称是什么?
advancesoftwareltd.
您的组织名称是什么?
china
您所在的城市或区域名称是什么?
beijing
您所在的州或省份名称是什么?
该单位的两字母国家代码是什么
cn
CN=dinstone,OU=advancesoftwareltd.,O=china,L=beijing,ST=beijing,C=cn正确吗?
[否]:
y
输入<
mykey>
的主密码
(如果和keystore密码相同,按回车):
在C:
\DocumentsandSettings\new下可以找到一个文件:
server.keystore,其中就包含了自签名的证书。
这里要求certificatekeystore和certificate的密码一致,此为Tomcat的约束。
Step3,在%TOMCAT_HOME%目录下新建目录keystore,并拷贝server.keystore到其目录下。
Step4,修改%TOMCAT_HOME%/conf/server.xml文件。
添加https的Connector。
Connector
port="
200"
SSLEnabled="
keystore/server.keystore"
123456"
/>
keystoreFile指向文件%TOMCAT_HOME%/keystore/server.keystore文件。
keystorePass就是刚才生成certificatekeystore的密码。
Step5,测试Https。
访问https:
//localhost:
8443/,提示有不安全的证书,接受证书,看到可亲的tom猫。
4.延伸
某些情况下,某些特定资源需要走https协议,如登录请求。
这时,我们可以在web.xml中配置约束。
security-constraint>
web-resource-collection>
web-resource-name>
SSLResource<
/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>
这样当使用如下请求访问登录页面时,则服务器将该请求建立在https连接上。
7.2Tomcat6.0.26SSL的配置
protocol="
org.apache.coyote.http11.Http11NioProtocol"
maxThreads="
keystore/tomcat.jks"