Tomcat启用https服务

6月 6th, 2016 1,723 留下评论 阅读评论

第一步,获取证书

这个就去百度吧,既有免费证书,也有收费的证书,当然收费的证书会更靠谱更受大众认同(比如GeoTrust的)。

然后证书分为3个等级,DV(Domain Validation,证明当前站点在指定域名下,最常见的),OV(Organization Validation,证明当前站点在指定公司or组织下,浏览器会在URL前显示公司名称的),EV(Extended Validation,比OV更加复杂安全的证书,一般为网银所使用)。

这里选择国内的免费证书:https://www.wosign.com/

在它家网站上注册用户,申请免费证书,要填写指定的域名地址和证书保护密码,然后就可以下载到证书了。下载的zip包里有专门供tomcat使用的jks证书。

第二步,部署https

apache-tomcat/conf/server.xml中原来被注释的<Connector port=”8443″ … />打开,如下配置:

<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
    acceptCount="100" executor="tomcatThreadPool" URIEncoding="UTF-8" 
    compression="on" compressableMimeType="text/html,text/css,application/javascript"
    SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS"
    keystoreFile="/home/.../xxx.com.jks" keystorePass="xxxxxxx"
/>

这里的配置要和<Connector port="80" .../>的配置要完全一致,第一行是基础协议,第二行是优化参数和设置编码,第三行是开启静态资源压缩,最后两行是对于SSL特殊的设置。

在https的Connector中忘记加上URIEncoding="UTF-8",会导致https中文异常而http正常
(http的<Connector />自带这个属性)

第三步,http自动跳转到https

<Connector port="80" .../>加上属性redirectPort="443",这个默认就有。

然后再修改apache-tomcat/conf/web.xml,最后加上一段:

    <security-constraint>
        <web-resource-collection>
            <web-resource-name>Protected Context</web-resource-name>
            <url-pattern>/*</url-pattern>
        </web-resource-collection>
        <!-- auth-constraint goes here if you requre authentication -->
        <user-data-constraint>
            <transport-guarantee>CONFIDENTIAL</transport-guarantee>
        </user-data-constraint>
    </security-constraint>

搞定

第三步,https的注意事项

  • 在https下,如果页面内还存在有http链接的内容(图片、js等静态资源),则会产生警告,并在浏览器URL栏中失去绿色锁的标志
  • 在https下,如果页面内企图发起http的post请求,则会默认被浏览器禁止,并产生警告
Categories: Java 标签:, , ,
  1. 还没有评论呢。