Web服务器启用HTTPS的配置方法

打印 上一主题 下一主题

主题 842|帖子 842|积分 2526

本文于2016年3月完成,发布在个人博客网站上。 考虑个人博客因某种原因无法修复,于是在博客园安家,之前发布的文章逐步搬迁过来。
nginx的配置方法

可以参考Jerry Qu的本博客 Nginx 配置之完整篇
Tomcat的配置方法

以Java语言实现的Connector为例,介绍配置方法。
创建证书


  • Windows下,可以在CMD下执行命令
    1.   "%JAVA_HOME%\bin\keytool" -genkey -alias tomcat -keyalg RSA -keystore tomcat.key
    复制代码
  • Unix下,可以在shell下执行命令
    1.   $JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA -keystore tomcat.key
    复制代码
keytool提示输入口令时,输入changeit;然后按照要求输入其它信息,证书信息会生成到tomcat.key文件中。
注意,这里输入的口令可以不是changeit,但具体值需要和Connector配置中的keyPass,keystorePass保持一致,否则Tomcat启动后会报错提示无法加载证书文件。
关于证书,这是一个很大的话题,涉及范围很广,而Jackie其实一直以来并没有搞的很清楚,所以此处就不献丑了。
配置Connector

对于Apache Tomcat的7.0.X版本,修改$CATALINA_BASE/conf/server.xml中定义的Connector,增加HTTPS通道的定义,样例如下:
  1. [/code]对于Apache Tomcat的9.0.X版本,与7.0.x版本的配置方法稍有不同,但同样需要修改$CATALINA_BASE/conf/server.xml中定义的Connector,样例如下:
  2. [code]<Connector port="8080" protocol="HTTP/1.1"
  3.         connectionTimeout="20000"
  4.     redirectPort="8443"
  5. />
  6. <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
  7.         connectionTimeout="20000"
  8.     URIEncoding="UTF-8"
  9.     SSLEnabled="true"
  10.     scheme="https"
  11.     secure="true"
  12.     >
  13.     <SSLHostConfig>
  14.         <Certificate certificateKeystoreFile="conf/tomcat.key"
  15.                 certificateValidation="false"
  16.                 certificateKeyPassword="changeit"
  17.                 certificateKeystorePassword="changeit"
  18.             type="RSA"
  19.         />
  20.     </SSLHostConfig>
  21. </Connector>
复制代码
样例中配置了明文的口令,显然并不安全,存在安全上的漏洞。
解决的方法如下:

  • 使用安全且可逆的加密算法生成密文;
  • 修改tomcat相关的源码,使用加密算法还原得到明文,然后使用明文来加载证书。
过程并不复杂,可以参考tomcat安全配置之证书密码加密存储
配置应用

修改应用的web.xml文件,增加如下配置
  1.                                          true                     SSL        /*<Connector port="8080" protocol="HTTP/1.1"
  2.         connectionTimeout="20000"
  3.     redirectPort="8443"
  4. />
  5. <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
  6.         connectionTimeout="20000"
  7.     URIEncoding="UTF-8"
  8.     SSLEnabled="true"
  9.     scheme="https"
  10.     secure="true"
  11.     >
  12.     <SSLHostConfig>
  13.         <Certificate certificateKeystoreFile="conf/tomcat.key"
  14.                 certificateValidation="false"
  15.                 certificateKeyPassword="changeit"
  16.                 certificateKeystorePassword="changeit"
  17.             type="RSA"
  18.         />
  19.     </SSLHostConfig>
  20. </Connector> CONFIDENTIAL   
复制代码
当然可以依据实际情况调整样例中对URL的控制范围。
官网的参考资料

关于HTTPS的阅读材料

百度的HTTPS实践

百度目前已实现全站启用HTTPS,来自百度运维部主页的如下文章记录了百度技术人员的实践经验,非常值得一读。
Jerry Qu的分享

Jerry Qu的博客是一个好地方,有很多前端的资料,值得拜读。
其它资料


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

魏晓东

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表