tomcat 配置https双向验证

  用文字来记录一下配置https的流程吧,免得下次在来配置时再来为难我这少的可怜的记忆力呢。 首先我们是需要用到jdk自带的工具 "keytool" 来生成证书,证书分为客户端证书和服务器证书,如果是单项验证,用 keytool 生成一个服务器证书即可。下文将会讲解他们各自的特点和用法。

  生成服务证书:

keytool -genkey -v -alias tomcat -keyalg RSA -keystore D:\home\tomcat.keystore -validity 36500

 ,这条语句会在D:\home路径生成一个服务器的证书。

  我们要配置双向验证,所以也要生成客户端证书 :

keytool -genkey -v -alias mykey -keyalg RSA -storetype PKCS12 -keystore D:\home\mykey.p12

 ,这样的命令会在 d:\home 生成一个客户端证书,我在客户端将客户端证书导入到“个人”。

  我虽然生成证书,但还没有让client和server 互相信任。

让服务器信任客户端,先把.p12的格式转化成.cer格式:

keytool -export -alias mykey -keystore D:\home\mykey.p12 -storetype PKCS12 -storepass 证书的密码 -rfc -file D:\home\mykey.cer

 再将客户端证书导入到服务器可信耐:

keytool -import -v -file D:\home\mykey.cer -keystore D:\home\tomcat.keystore

让客户端信任服务器端证书,首先我们需要把生成的服务器端证书转化成客户端可以导入的格式:

keytool -keystore D:\home\tomcat.keystore -export -alias tomcat -file D:\home\tomcat.cer

 次命名将tomcat.keystore 导出为.cer格式,将.cer的格式导入客户端即可。

   到此,证书的生成完成。该配置tomcat的咯:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true" maxThreads="150" scheme="https"
secure="true" clientAuth="true" sslProtocol="TLS"
keystoreFile="D:\\home\\tomcat.keystore" keystorePass="123456"
truststoreFile="D:\\home\\tomcat.keystore" truststorePass="123456" />

属性简要说明:

clientAuth:设置是否双向验证

keystoreFile:服务器证书文件路径

keystorePass:证书密码

truststoreFile:客户端证书的根证书

truststorePass:根证书密码

  启动服务器,ie就可以用 https协议访问服务器咯,ie警告我们的证书不安全,我们可以在ie设置-->高级 里面,将 “对证书地址不匹配发出警告” 取消掉既可以忽略警告咯 。

  最后我在用户https中访问http资源被浏览器拦截咯,我们在ie 设置-->安全 “显示混合内容” 选择 “启用”。firefox 操作为,about:config -->将security.mixed_content.block_active_content;true ,就可以正常访问咯。

猜你喜欢

转载自honcur.iteye.com/blog/1956199