经过前面两篇文章HttpClient访问https链接(一)和HttpClient访问https链接(二)的介绍,本来计划的第三篇应该是介绍Android端的双向认证,但是由于双向认证的实现,必须服务端和客户端都开启双向认证才真正有意义,所以第三篇文章我将会介绍如何利用keystore配置tomcat7的双向认证环境。
证书库、证书的生成
生成服务器证书库
1 | keytool -validity 36500 -genkey -v -alias tomcat -keyalg RSA -keystore tomcat.keystore -dname "CN=www.ilovn.com,OU=,O=,L=,ST=,c=" -storepass 123456 -keypass 123456 |
-validity 36500 有效期,以天为单位
CN 服务器的域名或者IP地址
OU 组织单位
O 组织
L 区域
ST 州/省份
C 国家
客户端证书
1 | keytool -validity 36500 -genkeypair -v -alias client -keyalg RSA -storetype PKCS12 -keystore client.p12 -dname "CN=client,OU=,O=,L=,ST=,c=" -storepass 123456 |
-storetype PKCS12 主要是为了将证书导入浏览器中。
将生成的证书导入浏览器中。
将客户端证书导入服务器端证书库
将客户端证书导出 CER格式证书,然后将CER格式证书导入到服务器端证书中。
1 | keytool -export -alias client -keystore client.p12 -storetype PKCS12 -storepass 123456 -rfc -file client.cer |
将client.cer 导入到服务器证书库
1 | keytool -import -alias client -v -file client.cer -keystore tomcat.keystore -storepass 123456 |
从服务器证书库导出服务器证书(可选)
1 | keytool -export -alias tomcat -keystore tomcat.keystore -storepass 123456 -rfc -file tomcat.cer |
该证书可以导入浏览器中,让客户端信任服务器证书。不导入也不影响使用,但浏览器会不信任服务器证书,会提示错误信息。
查看证书库中的所有证书
1 | keytool -list -keystore tomcat.keystore -storepass 123456 |
Tomcat 配置
配置 server.xml
1 | <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" |
启动Tomcat,访问测试一下。