近期google把http连接全部标注为不安全算是加速推进了https的发展进度。也由于本人开发的一个小系统的前端页面总是无故被运营商插入广告,所以无法忍受干脆弄成https得了。

案例:

CentOS8自签SSL证书并配置nginx centos安装ssl证书_tomcat


而且运营商也是恶心的很,白天基本上不怎么插入,等到半夜凌晨的时候基本上每次访问都插入广告了,家里用的是移动的宽带,在公司电信的网络访问照样会插入广告。

看网页源码,这就是运营商拦截网页在代码里面加了一条广告的js代码。我的原网站代码并没有这一条。这估计也就是http的最大的缺点了。

CentOS8自签SSL证书并配置nginx centos安装ssl证书_tomcat_02



正题:

系统环境:Centos7

Apache版本:Apache2.4.6(yum安装)

Tomcat版本:8.5.30(注意: 8.5以下版本配置方法不一样,不适用此方法)

1.申请免费的HTTPS SSL域名证书

本人是在腾讯云申请:

在腾讯云产品找到SSL证书管理,选择申请证书:

CentOS8自签SSL证书并配置nginx centos安装ssl证书_http_03

确定后填写域名信息:

CentOS8自签SSL证书并配置nginx centos安装ssl证书_Centos_04

有域名管理权限选择DNS验证,只有空间权限选择文件验证,这里以DNS验证为例:

CentOS8自签SSL证书并配置nginx centos安装ssl证书_Centos_05

等待几分钟审核通过后下载文件:

CentOS8自签SSL证书并配置nginx centos安装ssl证书_tomcat_06

下载完成后解压找到Apache目录下的三个文件:

  1. 1_root_bundle.crt
  2. 2_zaax.top.crt
  3. 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值需要修改。:

CentOS8自签SSL证书并配置nginx centos安装ssl证书_http_07

修改ssl证书路径:

CentOS8自签SSL证书并配置nginx centos安装ssl证书_Apahce_08

修改完成后,重启apache,就可以用Https访问了。

systemctl restart httpd.service

CentOS8自签SSL证书并配置nginx centos安装ssl证书_tomcat_09

还有最后一个问题,就是如果是用http://访问并不会自动跳转到https访问。

3.Apache HTTP访问强制跳转HTTPS访问

在httpd.conf文件中加入:

RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)?$ https://%{SERVER_NAME}/$1 [L,R]

加入位置 :

<Directory>
 ... 
<directory>

CentOS8自签SSL证书并配置nginx centos安装ssl证书_http_10

设置完成后重启apachet

http访问就会自动跳转到https,渣渣运营商休想加广告。

CentOS8自签SSL证书并配置nginx centos安装ssl证书_Centos_11

4.Tomcat服务器配置SSL证书

在下载的ssl文件中找到Tomcat目录,将zaax.top.jks文件上传到服务器的Tomcat目录下的/conf/位置。

修改tomcat service.xml文件,找到这一段,去掉注释,修改证书路径和加入申请证书填写的密码,修改成功后保存重启tomcat。

CentOS8自签SSL证书并配置nginx centos安装ssl证书_Https_12

注意:端口根据自身需求修改!
这里端口可能有疑问,举例,我的tomcat默认端口是8080,没有修改过:
如果是http访问:那么url不变:http://www.zaax.top:8080
如果是https访问:请求的url变为:https://www.zaax.top:8443

但是如果修改了https端口,需要修改三个地方,并保持一致:

CentOS8自签SSL证书并配置nginx centos安装ssl证书_tomcat_13

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>

CentOS8自签SSL证书并配置nginx centos安装ssl证书_Centos_14

重启tomcat。

CentOS8自签SSL证书并配置nginx centos安装ssl证书_Https_15


访问:http://www.zaax.top:8080会自动跳转至https://www.zaax.top:8443,这样就兼容了老的接口,新开发的接口就可以用8443端口。大功告成!