终于搞定了Windows下Tomcat Web服务器的SSL配置
本文涉及:
1.windows下的OpenSSL安装
2.自己签发根证书
3.用这个根证书来签发服务器证书
4.服务器端证书导入
5.TOMCAT服务器设置
6.客户端根证书安装
本文不涉及:
1.SSL相关的概念及解释
2.购买CA证书
3.双向SSL认证
1.软件准备
1) jsdk1.5下载 http://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/VerifyItem-Start/jdk-1_5_0_15-windows-i586-p.exe?BundledLineItemUUID=skhIBe.l94EAAAEZz_YKv8Xt&OrderID=tzdIBe.l6SoAAAEZxfYKv8Xt&ProductID=9K3ACUFBov0AAAEYe.s5AXuQ&FileName=/jdk-1_5_0_15-windows-i586-p.exe
2)tomcat5.5.26下载http://ftp.kddilabs.jp/infosystems/apache/tomcat/tomcat-5/v5.5.26/bin/apache-tomcat-5.5.26.zip
3)openssl0.9.7c下载http://gnuwin32.sourceforge.net/downlinks/openssl-bin.php
2.软件安装
安装(解压)上面下载的软件,假设安装目录如下:
jsdk: C:\jdk1.5.0_15
tomcat: C:\tomcat-5.5.26
openssl: C:\GnuWin32OpenSSL
3.SSL配置
1)添加windows环境变量JAVA_HOME=C:\jdk1.5.0_15
运行C:\tomcat-5.5.26\bin\startup.bat,如果能正常启动,说明环境变量设置成功。
关闭tomcat启动窗口。
2)建目录C:\ca,用来存放生成的临时文件。
3)新建文件C:\GnuWin32OpenSSL\bin\openssl.conf,内容如下:
[ req ]
default_bits = 1024
default_keyfile = ca-key.pem
distinguished_name = req_distinguished_name
attributes = req_attributes
prompt = no
output_password = as12345
[ req_distinguished_name ]
C = CN
ST = Beijing
L = Xichengqu
O = www.albertsong.com
OU = ca.albertsong.com
CN = Albert Song
emailAddress = test@test.com
[ req_attributes ]
challengePassword = as1234567
新建openssl.conf可参考:http://www.openssl.org/docs/apps/req.html#EXAMPLES
4)执行cmd.exe,在命令行窗口执行如下操作:
rem 转到OpenSSL目录
cd C:\GnuWin32OpenSSL\bin
rem 生成CA私钥以及自签名根证书
rem 生成CA私钥
openssl genrsa -out c:\ca\ca-key.pem 1024
rem 生成待签名证书
openssl req -new -out c:\ca\ca-req.csr -key c:\ca\ca-key.pem -config openssl.conf
rem 用CA私钥进行自签名
openssl x509 -req -in c:\ca\ca-req.csr -out c:\ca\ca-cert.pem -signkey c:\ca\ca-key.pem -days 365
rem 转到java bin目录
cd C:\jdk1.5.0_15\bin
rem 生成server端证书
rem 生成KeyPair,注意keyPass,storepass 要一样
keytool -genkey -alias blog_albertsong -validity 365 -keyalg RSA
-keysize 1024 -keypass as.1234 -storepass as.1234 -dname
"cn=localhost,ou=department,o=company,l=Beijing,st=Beijing,c=CN"
-keystore c:\ca\albertsong.jks
rem 生成待签名证书
keytool
-certreq -alias blog_albertsong -sigalg MD5withRSA -file
c:\ca\albertsong.csr -keypass as.1234 -keystore c:\ca\albertsong.jks
-storepass as.1234
rem 转到OpenSSL目录
cd C:\GnuWin32OpenSSL\bin
rem 用CA私钥进行签名
openssl x509 -req -in c:\ca\albertsong.csr -out
c:\ca\albertsong-cert.pem -CA c:\ca\ca-cert.pem -CAkey
c:\ca\ca-key.pem -days 365 -set_serial 1
rem 转到java bin目录
cd C:\jdk1.5.0_15\bin
rem 导入信任的CA根证书到Java的默认位置
keytool -import -v -trustcacerts -storepass changeit -alias
root_albertsong -file c:\ca\ca-cert.pem -keystore
%JAVA_HOME%\jre\lib\security\cacerts
rem 把CA签名后的server端证书导入keystore
rem 提示时,输入as.1234
keytool -import -v -trustcacerts -storepass as.1234 -alias
blog_albertsong -file c:\ca\albertsong-cert.pem -keystore
c:\ca\albertsong.jks
rem 查看server端证书
rem 密码分别是changeit, as.1234
keytool -list -keystore %JAVA_HOME%\jre\lib\security\cacerts
keytool -list -keystore c:\ca\albertsong.jks
5)修改server.xml使Tomcat支持SSL
在C:\tomcat-5.5.26\conf\server.xml找到
<!-- Define a SSL HTTP/1.1 Connector on port 8443 -->
<!--
<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" />
-->
改为:
<!-- Define a SSL HTTP/1.1 Connector on port 8443 -->
<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="C:\tomcat-5.5.26\conf\albertsong.jks" keystorePass="as.1234"/>
6)将C:\ca\albertsong.jks复制到C:\tomcat-5.5.26\conf\下。
7)Client端安装信任的根证书
将c:\ca\ca-cert.pem改名为c:\ca\ca-cert.cer,在client端的IE中使用"工具-->Internet选项-->内容-->证书-->导入"把我们生成的CA根证书导入,使其成为用户信任的CA。
8)用IE浏览器使用SSL协议访问Tomcat
执行C:\tomcat-5.5.26\bin\startup.bat启动Tomcat
在IE浏览器的地址栏中输入https://localhost:8443,如果前面的操作都正确的话,应该可以看到Tomcat的欢迎页面。同时状态栏上的小锁处于闭合状态,表示您已经成功地与服务器建立了要求客户端验证的SSL安全连接。
9)其他
rem 修改keystore的keypass
keytool -alias blog_albertsong -keypasswd -keypass as.1234 -new as.12345 -keystore C:\tomcat-5.5.26\conf\albertsong.jks
如果要将tomcat安装成服务,可参考http://www.albertsong.com/read-64.html
参考链接
http://topic.csdn.net/t/20021205/16/1234396.html
http://www.openssl.org/docs/apps/req.html
http://www.herongyang.com/crypto/OpenSSL_Signing_keytool_CSR_5.html
http://gnuwin32.sourceforge.net/packages/openssl.htm
http://www.techscore.com/tech/J2EE/Servlet/11-3.html
http://www.jajakarta.org/tomcat/tomcat5.0/ja/docs/tomcat-docs/ssl-howto.html
http://www.daily-labo.com/opensslcnf.txt
http://www.310f.com/exocet/hiki/?Apache+SSL+on+Windows
http://www.ibm.com/developerworks/cn/security/se-tcssl/index.html
后记:
虽然是一个简单的问题,也用了我几天的时间,起实质作用的是最后半天。按照这个笔记再来一遍,不过数分钟时间,而且不需要具备任何SSL的相关知识,只要你还能下载到我链接里给出的软件。