近期google把http连接全部标注为不安全算是加速推进了https的发展进度。也由于本人开发的一个小系统的前端页面总是无故被运营商插入广告,所以无法忍受干脆弄成https得了。
案例:
而且运营商也是恶心的很,白天基本上不怎么插入,等到半夜凌晨的时候基本上每次访问都插入广告了,家里用的是移动的宽带,在公司电信的网络访问照样会插入广告。
看网页源码,这就是运营商拦截网页在代码里面加了一条广告的js代码。我的原网站代码并没有这一条。这估计也就是http的最大的缺点了。
正题:
系统环境:Centos7
Apache版本:Apache2.4.6(yum安装)
Tomcat版本:8.5.30(注意: 8.5以下版本配置方法不一样,不适用此方法)
1.申请免费的HTTPS SSL域名证书
本人是在腾讯云申请:
在腾讯云产品找到SSL证书管理,选择申请证书:
确定后填写域名信息:
有域名管理权限选择DNS验证,只有空间权限选择文件验证,这里以DNS验证为例:
等待几分钟审核通过后下载文件:
下载完成后解压找到Apache目录下的三个文件:
- 1_root_bundle.crt
- 2_zaax.top.crt
- 3_zaax.top.key
在Centos7的Apache安装目录下新建ssl目录:
cd /etc/httpd/ssl
在将这三个文件上传至ssl目录。
2.Apache服务器安装SSL域名证书
安装ssl模块
yum install mod_ssl
修改ssl.conf文件
vim /etc/httpd/conf.d/ssl.conf
修改域名指定的目录:
如果httpd.conf文件中没有指定域名目录,默认则是/var/www/html目录,因为我指定了域名目录,所以DocumentRoot值需要修改。:
修改ssl证书路径:
修改完成后,重启apache,就可以用Https访问了。
systemctl restart httpd.service
还有最后一个问题,就是如果是用http://访问并不会自动跳转到https访问。
3.Apache HTTP访问强制跳转HTTPS访问
在httpd.conf文件中加入:
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)?$ https://%{SERVER_NAME}/$1 [L,R]
加入位置 :
<Directory>
...
<directory>
设置完成后重启apachet
http访问就会自动跳转到https,渣渣运营商休想加广告。
4.Tomcat服务器配置SSL证书
在下载的ssl文件中找到Tomcat目录,将zaax.top.jks文件上传到服务器的Tomcat目录下的/conf/位置。
修改tomcat service.xml文件,找到这一段,去掉注释,修改证书路径和加入申请证书填写的密码,修改成功后保存重启tomcat。
注意:端口根据自身需求修改!
这里端口可能有疑问,举例,我的tomcat默认端口是8080,没有修改过:
如果是http访问:那么url不变:http://www.zaax.top:8080
如果是https访问:请求的url变为:https://www.zaax.top:8443
但是如果修改了https端口,需要修改三个地方,并保持一致:
8080是http端口
8443是https端口
8009是tomcat集群端口
5.Tomcat Http请求强制跳转HTTPS请求
编辑 web.xml文件:
vim /usr/tomcat/apache-tomcat-8.5.24/conf/web.exml
在倒数第二行加入:
<security-constraint>
<web-resource-collection >
<web-resource-name >SSL</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
重启tomcat。
访问:http://www.zaax.top:8080会自动跳转至https://www.zaax.top:8443,这样就兼容了老的接口,新开发的接口就可以用8443端口。大功告成!