一、创建证书
证书用于客户端与服务端安全认证。我们可以使用JDK自带的keytool工具来生成证书。真正在产品环境中使用肯定要去证书提供商去购买,证书认证一般都是由VeriSign认证,官方地址:http://www.verisign.com/cn/
生成密钥库和证书:
1、生成服务器证书库
keytool -validity 365 -genkey -v -alias server -keyalg RSA -keystore F:\ssl\server.keystore //在F盘中,先创建一个空ssl文件夹
"-validity 365":设置证书的有效日期
2、生成客户端证书库:
keytool -validity 365 -genkeypair -v -alias client -keyalg RSA -storetype PKCS12 -keystore F:\ssl\client.p12
3、从客户端证书库中导出客户端证书
keytool -export -v -alias client -keystore F:\ssl\client.p12 -storetype PKCS12 -rfc -file F:\ssl\client.cer
4、从服务器证书库中导出服务器证书
keytool -export -v -alias server -keystore F:\ssl\server.keystore -rfc -file F:\ssl\server.cer
5、生成客户端信任证书库(由服务端证书生成的证书库)
keytool -import -v -alias server -file F:\ssl\server.cer -keystore F:\ssl\client.truststore
6、将客户端证书导入到服务器证书库(使得服务器信任客户端证书)
keytool -import -v -alias client -file F:\ssl\client.cer -keystore F:\ssl\server.keystore
7、查看证书库中的全部证书
keytool -list -keystore F:\ssl\server.keystore
以上所有输入密码都是自定义设置为:123456。如果不想每次执行命令都输入命令可以加上"-storepass 123456"
如:keytool -list -keystore F:\ssl\server.keystore -storepass 123456
二、Tomcat配置:
(1).把server.keystore文件放到tomcat的安装目录下的conf目录,如: D:\Tomcat_7.0.47\conf
(2).修改tomcat目录下的server.xml文件
添加如下内容:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true" maxThreads="150" scheme="https" secure="true"
clientAuth="true" sslProtocol="TLS" truststoreType='JKS'
keystoreFile="conf/server.keystore" keystorePass="123456"
truststoreFile="conf/server.keystore" truststorePass="123456"/>
注释下内容:
<!--
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"/>
-->
三、客户端浏览器证书导入:
这里需要导入两个文件,客户端证书库client.p12文件和服务端证书server.cer文件
客户端证书库client.p12导入:
双击client.p12文件按提示向导执行
输入私钥密码:
下一步,选择第一个自动选择证书存储选项,下一步,按向导完成
服务端证书server.cer文件导入:
四、测试
启动tomcat。双击tomcat/bin文件夹中的startup.bat
在浏览器中输入 https://localhost:8443 出现如下界面,则表示https 8443端口配置成功
备注:一般Tomcat默认的SSL端口号是8443,但是对于SSL标准端口号是443,这样在访问网页的时候,直接使用https而不需要输入端口号就可以访问,如https://ip/