Tomcat双向SSL配置

文章参考了:http://www.blogjava.net/icewee/archive/2012/06/04/379947.html

个人简单做了下

Tomcat版本       7.0.29

JDK版本          6u38

流程:

进行设置

实验语句:

CN必须与服务端地址相同
生成服务器端keystore
keytool -validity 365 -genkey -v -alias server -keyalg RSA -keystore server.keystore -dname "CN=127.0.0.1,OU
=hangzhou,ST=zhejiang,c=cn" -storepass 123456server -keypass 123456server
生成客户端 这边要用PKCS12这个库类型 不然不能被浏览器成功解析
keytool -validity 365 -genkeypair -v -alias client -keyalg RSA -storetype PKCS12 -keystore client.p12 -dname "CN=client,OU=zjut,O=zjut,L=hangzhou,ST=zhejiang,c=cn" -storepass 123456client -keypass 123456client

导出客户端的认证文件
keytool -export -v -alias client -keystore client.p12 -storetype PKCS12 -storepass 123456client -rfc -file client.cer

导出服务器的认证文件 //这步可以不做
keytool -export -v -alias server -keystore server.keystore -storepass 123456server -rfc -file server.cer

将客户端的认证文件放入服务器端的库里面去 //应该可以设定到不同的库 对应server下的truststoreFile即可
keytool -import -v -alias client -file client.cer -keystore server.keystore -storepass 123456server

这句是用来查看的
keytool -list -keystore server.keystore -storepass 123456server

 

 

这边的流程很简单 就是制作服务器端的证书 再制作客户端的证书

 

把客户端的证书放入服务器端的验证库(这里把他放到了服务器端的密钥库里)

在tomcat下的server.xml设置一下使用SSL以及对应端口(这边可以直接覆盖掉8080端口 但为了实验的方便 直接用8443端口)

配置如下:

 

 

<Connector SSLEnabled="true" acceptCount="100" clientAuth="true"
    disableUploadTimeout="true" enableLookups="false" maxThreads="25"
    port="8443" keystoreFile="server.keystore" keystorePass="123456server"
truststoreFile="server.keystore" truststorePass="123456server"
    protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https"
secure="true" sslProtocol="TLS" />
这边的设置也很简单
SSLEnabled="true" 打开SSL方式
clientAuth="true" 要求客户端验证 不然就无法打开
port="8443" 8443端口
keystoreFile="server.keystore" 使用的keystore文件
truststoreFile="server.keystore" 放客服端验证的keystore文件

 然后在浏览器的SSL选项里的个人里 把生成的client.p12放入(让服务器端可以验证,这样做之后就可以访问设置了必须验证的网页 但会显示不安全的证书):


 

 

然后再受信任的根证书颁发机构里把服务器端的证书(server.cer)放入:


 

猜你喜欢

转载自fair-jm.iteye.com/blog/1881459