Tomcat6配置HTTPS

来源:互联网 发布:手机象棋作弊软件 编辑:程序博客网 时间:2024/05/05 09:21
我使用的JDK版本为JDK6,使用的的Tomcat版本为6;配置Tomcat下的HTTPS其实很简单,只需要完成两步工作就可以 了;SSL认证分双向认证和单向认证,如果为又向认证则客户端也需要安装已生成好的文件。

 

比较详细的介绍keytool

1.在哪里可以找到这个命令?
安装JDK,在JDK的bin目录中就有,比如C:\j2sdk1.4.2_08\bin>

2.命令的主要参数
-certreq     [-v] [-alias <alias>] [-sigalg <sigalg>]
[-file <csr_file>] [-keypass <keypass>]
[-keystore <keystore>] [-storepass <storepass>]
[-storetype <storetype>] [-provider <provider_class_name>] ...
产生一个PKCS#10格式的证书签名请求文件(CSR)

-delete      [-v] -alias <alias>
[-keystore <keystore>] [-storepass <storepass>]
[-storetype <storetype>] [-provider <provider_class_name>] ...
从keystore中删除一个别名(alias )

-export      [-v] [-rfc] [-alias <alias>] [-file <cert_file>]
[-keystore <keystore>] [-storepass <storepass>]
[-storetype <storetype>] [-provider <provider_class_name>] ...
* -export, 已改名 -exportcert 导出公钥证书

-genkey      [-v] [-alias <alias>] [-keyalg <keyalg>]
[-keysize <keysize>] [-sigalg <sigalg>]
[-dname <dname>] [-validity <valDays>]
[-keypass <keypass>] [-keystore <keystore>]
[-storepass <storepass>] [-storetype <storetype>]
[-provider <provider_class_name>] ...
* -genkey,已改名 -genkeypair产生私钥文件

-help

-identitydb  [-v] [-file <idb_file>] [-keystore <keystore>]
[-storepass <storepass>] [-storetype <storetype>]
[-provider <provider_class_name>] ...

-import      [-v] [-noprompt] [-trustcacerts] [-alias <alias>]
[-file <cert_file>] [-keypass <keypass>]
[-keystore <keystore>] [-storepass <storepass>]
[-storetype <storetype>] [-provider <provider_class_name>] ...
    * -import, 已改名 -importcert 导入公钥文件到keystore

-keyclone    [-v] [-alias <alias>] -dest <dest_alias>
[-keypass <keypass>] [-new <new_keypass>]
[-keystore <keystore>] [-storepass <storepass>]
[-storetype <storetype>] [-provider <provider_class_name>] ...

-keypasswd   [-v] [-alias <alias>]
[-keypass <old_keypass>] [-new <new_keypass>]
[-keystore <keystore>] [-storepass <storepass>]
[-storetype <storetype>] [-provider <provider_class_name>] ...

-list        [-v | -rfc] [-alias <alias>]
[-keystore <keystore>] [-storepass <storepass>]
[-storetype <storetype>] [-provider <provider_class_name>] ...

-printcert   [-v] [-file <cert_file>]

-selfcert    [-v] [-alias <alias>] [-sigalg <sigalg>]
[-dname <dname>] [-validity <valDays>]
[-keypass <keypass>] [-keystore <keystore>]
[-storepass <storepass>] [-storetype <storetype>]
[-provider <provider_class_name>] ...

-storepasswd [-v] [-new <new_storepass>]
[-keystore <keystore>] [-storepass <storepass>]
[-storetype <storetype>] [-provider <provider_class_name>] ...

命令参数很多,不过一般应用,把下面文件存成.bat文件可满足基本需要.

REM # create keystore file
keytool -genkey -dname "CN=Pingan Bank, OU=Pingan, O=Pingan, L=Shenzhen, ST=Shenzhen, C=CN" -alias pinganmer -keyalg RSA -keysize 1024 -keystore pinganmer.jks -keypass 12345678 -storepass 12345678 -validity 365

REM # export cert file
keytool -export -alias pinganmer -file pinganmer.cer  -keystore pinganmer.jks -storepass 12345678 -rfc

 

 

一、生成“服务器证书文件”

我把生成的“服务器证书文件”取名为server.jks。简单起见,我把server.jks放在D盘根目录下面,配置环境为windows.
首先使用JDK自带的工具keytool生成一个“服务器证书”,取名为server.jks。

 

tomcat6配置双向认证

1、生成服务器端证书

例:keytool -genkey -v -dname "CN=hera.org.com, OU=ou, O=Org, L=Shenzhen, ST=guangdong, C=CN" -alias Server -keyalg RSA -keystore d:\Server.keystore -keypass 1q2w3e4r -storepass 1q2w3e4r -validity 36500

注:CN必须为域名或IP


2、生成客户端证书
例:keytool -genkey -v -dname "CN=hera.org.com, OU=ou, O=Org, L=Shenzhen, ST=guangdong, C=CN" -alias Client -keyalg RSA -storetype PKCS12 -keystore d:\Client.p12 -keypass 1q2w3e4r -storepass 1q2w3e4r -validity 36500

注:客户端的CN可以是任意值。双击Client.p12文件,即可将证书导入至浏览器(客户端)

3、由于是双向SSL认证,服务器必须要信任客户端证书,因此,必须把客户端证书添加为服务器的信任认证。由于不能直接将PKCS12格式的证书库导入,我们必须先把客户端证书导出为一个单独的CER文件,使用如下命令,先把客户端证书导出为一个单独的cer文件:

例:A、把客户端证书导出为一个单独的CER文件
       keytool -export -alias Client -keystore D:\Client.p12 -storetype PKCS12 -storepass 1q2w3e4r -rfc -file D:\Client.cer

       B、将该文件导入到服务器的证书库,添加为一个信任证书 (将已签名数字证书导入密钥库)

       keytool -import -v -file D:\Client.cer -keystore D:\Server.keystore -storepass 1q2w3e4r

 

4、让客户端信任服务器证书

例:keytool -keystore D:\Server.keystore -export -alias Server -file d:\Server.cer -storepass 1q2w3e4r
注:双击Server.cer文件,按照提示安装证书,将证书填入到“受信任的根证书颁发机构”。

       关闭安全中的地址匹配的比较

 

5、查看证书内容

示例:keytool -list -v -keystore server.keystore -storepass password

 

6、配置tomcat service.xml文件
Xml代码
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true" maxThreads="150" scheme="https" secure="true"
 clientAuth="true" sslProtocol="TLS" keystoreFile="D:/server.jks" keystorePass="password"
 truststoreFile="D:/server.jks" truststorePass="password"/>
 clientAuth="true"表示双向认证

 

tomcat6配置单向认证
1、生成服务器端证书
语法:keytool -genkey -keyalg RSA -dname "cn=localhost,ou=sango,o=none,l=china,st=beijing,c=cn" -alias server -keypass password -keystore d:\server.jks -storepass password -validity 3650
示例:keytool -genkey -keyalg RSA -dname "cn=localhost,ou=sango,o=none,l=china,st=beijing,c=cn" -alias server -keypass password -keystore server.jks -storepass password -validity 3650

2、由于是单向认证,没有必要生成客户端的证书,直接进入配置tomcat service.xml文件,Xml代码
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true"
  clientAuth="false" sslProtocol="TLS"
  keystoreFile="D:/server.jks" keystorePass="password"/>
clientAuth="false"表示单向认证,同时去掉truststoreFile="D:/server.jks" truststorePass="password"这2个属性 .

 

同时需要在客户端(可能服务器也要)端的浏览器中导入对应的证书,到时试一下单向验证看看,即只客户端信息服务器就OK