用文字来记录一下配置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 ,就可以正常访问咯。