Tomcat启用https服务
第一步,获取证书
这个就去百度吧,既有免费证书,也有收费的证书,当然收费的证书会更靠谱更受大众认同(比如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请求,则会默认被浏览器禁止,并产生警告