参考文献:


​http://tomcat.apache.org/tomcat-7.0-doc/ssl-howto.html​

​http://blog.sina.com.cn/s/blog_682b5aa1010113uu.html​​(中文,比较实用)

​https://help.ubuntu.com/community/TomcatSSL​

(服务器和客户端证书)

背景

本文以ubuntu环境为例进行说明,具体环境如下

OS:ubuntu-server_12.04

TOMCAT_HOME:/usr/local/tomcat7,安装方法参考:​​windows和linux下将tomcat注册为服务​

JAVA_HOME:/usr/lib/jvm/jdk1.7.0_45,安装方法参考:​​ubuntu下安装JDK并配置java环境​

总体思路

服务器端

1.用JDK自带的Keytool生成keystore文件
  1)打开终端控制台,转向tomcat主目录,执行生成keystore文件命令,这条命令的作用是在tomcat主目录下生成server.keystore文件,这里设定的server.keystore的密码是Envisi0n,这个密码在后面会用到。

keytool -genkey -alias tomcat -keyalg RSA -keypassEnvisi0n -storepass Envisi0n -keystore server.keystore -validity3600

  2)根据keystore文件生成证书,这条命令的作用是在tomcat主目录下生成server.cer证书文件。

keytool -export -trustcacerts -alias tomcat -fileserver.cer -keystore server.keystore -storepass Envisi0n

 

3)%TOMCAT_HOME%\conf\server.xml,找到一下这段内容,将这段的注释取消掉

<Connectorport="8443" protocol="HTTP/1.1"SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" />

并添加keystoreFile和keystorePass,如下图所示:

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

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

               clientAuth="false" sslProtocol="TLS"

keystoreFile="/usr/local/tomcat7/server.keystore"

              keystorePass="Envisi0n"  />

4)拿到上面第二步获得的证书以后,将此证书导入到JDK的cacerts库当中,执行如下命令

sudo /usr/lib/jvm/java-7-openjdk-amd64/bin/keytool -import -trustcacerts-alias tomcat -file server.cer -keystore/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/security/cacerts -storepass changeit

客户端:

采用单向认证,不需要导入用户证书。用firefox信任该网址就可以了。如果想知道客户端如何生成并导入证书,进行双向验证,