Tomcat7配置SSL

StartCom可以免费的为大家提供免费的SSL证书,可以到Free SSL Secured By StartCom官网申请。

注意事项

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

  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步创建的证书导入到浏览器中,再访问服务则可以正常访问。


转载于:https://my.oschina.net/hotleave/blog/306366

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值