tomcat 部署 https

04 Feb 2010 / Edit / History

tomcat 部署 https


  1. 在 startssl 上申请认证, 最后你会得到两个文件: ssl.key 和 ssl.crt, 建立一个新目录, 把这两个文件拷贝到该目录
  2. 下载 https://www.startssl.com/certs/ca.pem 和 https://www.startssl.com/certs/sub.class1.server.ca.pem
  3. 运行
    cat ssl.crt ca.pem sub.class1.server.ca.pem > chain.crt
  4. 运行
    openssl pkcs12 -export -in chain.crt -inkey ssl.key -out keystore.pkcs12 -name tomcat
    使用密码 "PASSWORD"
  5. 运行 (可选, 该步为校验步骤)
    keytool -list -rfc -keystore keystore.pkcs12 -storetype pkcs12
    注意: 结果中要含有如下的一行 "Certificate chain length: 3"
  6. 运行
    keytool -importkeystore -srckeystore keystore.pkcs12 \
    -srcstoretype PKCS12 -destkeystore keystore \
    -srcalias tomcat -destkeypass PASSWORD
    (注意: 此处的 PASSWORD 需要与目标 store 的密码一致) 
  7. 运行
    cp keystore $TOMCAT_HOME/conf/
  8. 修改 $TOMCAT_HOME/conf/server.xml, 去掉 SSL Connector 附近的注释, 内容如下:
    <Connector URIEncoding="UTF-8" port="443" protocol="HTTP/1.1" SSLEnabled="true"
    maxThreads="150" scheme="https" secure="true"
    clientAuth="false" sslProtocol="TLS"
    keystoreFile="conf/keystore"
    keystorePass="********"
    keyAlias="tomcat"
    />
  9. 把其余的 redirectPort="8443" 改为 redirectPort="443"
  10. 重启 tomcat
  11. 调整防火墙,启用 443 端口
  12. 备份 ssl.key 和 ssl.crt 到安全位置, 删除整个目录, 设置 $TOMCAT/conf/keystore 的属主为 tomcat 的运行用户, 设置权限为 640 或更低权限

注意事项:
  1. ssl.crt ca.pem sub.class1.server.ca.pem 都必须是 PEM 格式 (看起来类似base64)
  2. 所有步骤中建议使用同一套密码
  3. 此处对密码的要求不是很高, 因为运营机器上的 root 用户能同时拿到 keystore 和 server.xml, 密码再复杂也无效, 非 root 用户拿不到 keystore, 所以是安全的
  4. 如果有更高的安全要求, 建议修改 tomcat 的启动脚本, 在启动时手动输入密码, 设置为环境变量, 然后在 server.xml 中使用环境变量来获得密码 (仍然有问题, root 不在自己手上, 安全经常是幻像)
  5. Firefox, Chrome, IE 下均不会报警, 但 Java 客户端仍然不能使用, 解决方法如下
    1. 运行: wget https://www.startssl.com/certs/ca.pem
    2. 运行: keytool -importcert -trustcacerts -file ca.pem -keystore foo -storepass changeit
    3. 把 foo 拷贝到你的程序中
    4. 把如下两行代码加到你的程序 main 函数中:
      System.setProperty("javax.net.ssl.trustStore", "/path/to/foo");
      System.setProperty("javax.net.ssl.trustStorePassword", "changeit");




Tags: java, tomcat, https

Related Posts:

comments powered by Disqus
Copyright © 2017 LI Daobing, Powered by github:pages, Jekyll, bootstrap, Designed by quanquan
Fork me on GitHub