利用tomcat服务器配置https双向认证

首先请保证已经安装好jdk,并且环境变量以及配置好了

第一步、为服务器生成证书:

        使用toolkey为tomcat生成证书,假定目标机器的域名为localhost,使用如下命令生成:keytool ?genkey ?v ?aliaslocalhost_server RSA ?keystore localhost_server.store  ?validity 36500

第二步、为客户端生成证书:

       为浏览器生成证书,以便让服务器来验证它。为了能保证证书顺利导入至IE和Firefox,证书格式应该是PKCS12,因此,使用如下命令生成:keytool ?genkey ?v ?aliaslocalhost_client ?keyalg RSA ?storetype PKCS12 ?keystore localhost_client.p12。这样就产生了localhost_client.p12文件,我们只需双击localhost_client.p12文件,即可将证书导入到浏览器(客户端)。

第三步、让服务器信任客户端证书:

       由于是双向的SSL认证,服务器必须信任客户端证书,因此,必须要把客户端证书添加为服务器的信任证书。由于不能直接将PKCS12格式的证书导入,必须先把客户端证书导出为一个单独的CER文件,使用如下命令:keytool ?export ?aliaslocalhost_client?keystore localhost_client.p12 ?storetype ?storepass 123456 ?rfc?file localhost_trust.cer。下一步,是将该文件导入到服务器的证书库,添加一个信任证书,使用如下命令:keytool
?import ?v ?filelocalhost_trust.cer ?keystore localhost_server.store

通过list命令查看服务器的证书库,可以看到有两个证书,一个是服务器的证书,一个是受信任的客户端证书。

第四步、让客户端信任服务器证书:

       由于是双向SSL认证,客户端也要验证服务器证书,因此,必须把服务器证书添加到浏览器的“受信任的根证书颁发机构”。由于不能直接将keystore格式的证书库导入,必须先把服务器证书导出为一个单独的CER文件,使用如下命令:keytool ?keystorelocalhost_server.store ?export ?alias localhost_server ?file localhost_trust.cer。这样就产生了locahost_server.cer文件,我们只需双击localhost_server.cer文件,按照提示安装证书,将证书填入到“受信任的根证书颁发机构”。

第五步、配置tomcat服务器

       打开tomcat根目录下的/conf/server.xml,找到Connector port=“8443”配置段,修改为如下:

<Connectorport="8443"protocol="org.apache.coyote.http11.Http11NioProtocol"

SSLEnabled="true"maxThreads="150" scheme="https"

secure="true"clientAuth="true" sslProtocol="TLS"

keystoreFile="conf/localhost_server.keystore " keystorePass="123456"

truststoreFile="conf/localhost_server.keystore " truststorePass="123456" />

或者

<Connectorport="8443" protocol="HTTP/1.1" SSLEnabled="true"

               maxThreads="150"scheme="https" secure="true"

               clientAuth="false"sslProtocol="TLS"

               keystoreFile="conf/localhost_server.keystore"keystorePass="123456"

               truststoreFile="conf/localhost_server.keystore"truststorePass="123456"/>

(tomcat要与生成的服务端证书名一致)

属性说明:

clientAuth:设置是否双向验证,默认为false,设置为true代表双向验证

keystoreFile:服务器证书文件路径

keystorePass:服务器证书密码

truststoreFile:用来验证客户端证书的根证书,此例中就是服务器证书

truststorePass:根证书密码

第六步、测试:

       在浏览器中输入:https://localhost:8443/,会弹出选择客户端证书界面,点击“确定”,会进入tomcat主页,地址栏后会有“锁”图标,表示本次会话已经通过HTTPS双向验证,接下来的会话过程中所传输的信息都已经过SSL信息加密。

最后给大家看看效果图,免得大家觉得有问题:

转载至:http://blog.csdn.net/luo201227/article/details/36897387

此条目发表在Java分类目录。将固定链接加入收藏夹。

发表评论