码迷,mamicode.com
首页 > 其他好文 > 详细

Tomcat7配置SSL

时间:2014-08-25 17:23:24      阅读:227      评论:0      收藏:0      [点我收藏+]

标签:des   style   http   java   os   使用   io   文件   ar   

StartCom可以免费的为大家提供免费的SSL证书,可以到bubuko.com,布布扣官网申请。

注意事项

 整个注册过程比较简单,但在注册及使用的时候有几点需要注意的地方:

  1. 注册时必须填写真实的信息,否则申请会被拒绝
  2. 注册后需要认证域名,并且只能是一级域名,认证时会往域名邮箱(如webmaster@xxxx.com或相关的邮箱)发送验证码,登陆邮箱输入验证码即可通过验证
  3. StartSSL使用证书登陆,没有用户名和密码,所以一定要保存好注册时的证书,做好备份,如果弄丢了,只能重新申请了,备份方法:https://www.startssl.com/?app=25#4
  4. 免费的不支持一个域名多个不同的证书,如果之前创建错了,要销毁的话,需要支付$24.9的费用

验证域名

进入"Control Panel", 选择"Validation Wizard", 根据步骤一步步的验证域名。

创建证书

进入"Control Panel",选择"Certificates Wizard", 在target处选择"Web server SSL/TLS certificate", 根据向导提示,创建密钥进而创建证书。

如果不需要双向认证的话,ssl.key可以不需要解密,如果需要使用双向认证的话,则需要先把ssl.key进行解密后再创建PKCS#12(PFX)文件,否则会报错。

Caused by: java.io.IOException: DerInputStream.getLength(): lengthTag=109, too big.
        at sun.security.util.DerInputStream.getLength(DerInputStream.java:561)
        at sun.security.util.DerValue.init(DerValue.java:365)
        at sun.security.util.DerValue.<init>(DerValue.java:320)
        at sun.security.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:1220)
        at java.security.KeyStore.load(KeyStore.java:1214)
        at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getStore(JSSESocketFactory.java:392)
        at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getTrustStore(JSSESocketFactory.java:343)
        at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getTrustManagers(JSSESocketFactory.java:599)
        at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getTrustManagers(JSSESocketFactory.java:511)
        at org.apache.tomcat.util.net.jsse.JSSESocketFactory.init(JSSESocketFactory.java:434)
        at org.apache.tomcat.util.net.jsse.JSSESocketFactory.createSocket(JSSESocketFactory.java:181)
        at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:398)
        at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:646)
        at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:434)
        at org.apache.coyote.http11.AbstractHttp11JsseProtocol.init(AbstractHttp11JsseProtocol.java:119)
        at org.apache.catalina.connector.Connector.initInternal(Connector.java:978)
        ... 13 more

创建PKCS12文件

点击Control Panel中的Toolbox,找到create pkcs#12(pfx)文件,根据向导创建文件,注意这里的密钥需要是解密后的密钥,如果是加密的,则会在双向认证的时候报上面的错误。

配置tomcat

编辑${CATLINA_HOME}/conf/server.xml。

单向认证

直接使用从网站上创建的p12文件, 注意clientAuth需要设置成false

<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               keystoreFile="/home/hotleave/.server.p12" keystorePass="changeit" keystoreType="PKCS12"
               clientAuth="false" sslProtocol="TLS" />

双向认证

双向认证时,无法使用使用了加密的密钥创建的p12文件,如果之前创建的是加密的,则可以先用toolbox中的Decrypt Private Key进行解密再创建p12文件。

1. 双向认证时,无法再直接使用p12文件,需要改成java的keystore文件(假设从startssl中创建的p12文件保存在"~/.server.p12")

keytool -importkeystore -destkeystore server.jks -srckeystore ~/.server.p12 -srcstoretype PKCS12

2. 创建客户端证书,alias参数可以随意指定

keytool -genkey -v -alias client -keyalg RSA -storetype PKCS12 -keystore client.p12
3. 导出客户端证书的公钥,alias参数要与上一步指定的相同
keytool -export -alias client -keystore client.p12 -storetype PKCS12 -rfc -file client.cer
4. 将公钥保存到keystore中供服务器使用
keytool -import -v -file client.cer -keystore clientKeys.jks

5. 接下来配置tomcat

<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               keystoreFile="/home/hotleave/.server.jks" keystorePass="changeit"
               truststoreFile="/home/hotleave/clientKeys.jks" truststorePass="changeit"
               clientAuth="true" sslProtocol="TLS" />
6. 运行./catalina.sh configtest检测配置结果,如果不报错,基本就算是配置成功了。

7. 启动服务,直接访问时,会提示客户端认证失败。将第2步创建的证书导入到浏览器中,再访问服务则可以正常访问。


Tomcat7配置SSL

标签:des   style   http   java   os   使用   io   文件   ar   

原文地址:http://my.oschina.net/hotleave/blog/306366

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!