曾经HTTP协议使用得最多,但是它的安全问题也慢慢凸显,HTTPS就是为了解决那些问题而来。

背景

网站正式上线之后,虽然有了展示的空间,但是在其他人看来,这个网站是不安全的,因为它不是通过HTTPS协议来打开的,严格点的局域网甚至会直接屏蔽掉这个网址,有些浏览器可能在打开的时候就会提示这是个不安全的网站。

HTTP协议的问题在于它是明文传输的,很可能在传输过程中有重要的个人信息被窃取、监视,所以我们需要升级到HTTPS协议,升级的方法就是安装SSL证书。

安装SSL证书

因为目前使用的腾讯云服务器,下面的步骤都是在腾讯云平台操作,其他平台类似

1.选择证书类型

目前证书类型有:

  1. 扩展验证型(EV)SSL证书
  2. 组织验证型(OV)SSL证书
  3. 域名验证型(DV)SSL证书

目前腾讯云提供的免费SSL证书只有“域名验证型”,所以不用选了…

这种免费证书只支持绑定单域名,即域名A和它的子域名B算是两个域名。

证书有效期为1年,1年后记得重新申请(最好给1年后的自己写封信提醒一下…)

2.打开SSL证书服务

进入控制台,在总览界面的搜索框中输入“SSL证书”搜索,点击进入。

SSL证书
SSL证书

3.申请免费证书

在证书管理页面点击“申请免费证书”

申请免费证书
申请免费证书

会弹出确认对话框,可以看到有1年的免费证书可选,点击确定

证书类型
证书类型

填写域名的信息后,点击下一步

申请信息
申请信息

选择域名验证方式:手动DNS验证。这里提示我们要为域名添加一条解析记录,先不用管,点击确认申请。

验证方式
验证方式

提交后平台会告诉我们上一步需要添加的解析记录值。

查看解析记录
查看解析记录

3.配置域名验证

如果是阿里云,我们打开云解析DNS服务-域名解析

如果是腾讯云,我们打开DNS解析-域名解析列表

点击解析设置,进去添加一条解析记录,记录值就是刚才拿到的值,如下

解析设置
解析设置

到此,我们的域名验证服务就配置好了。

4.手动安装证书

不同服务器的安装步骤有差异,这里以Nginx服务器为例。

  1. 在证书管理-证书列表,点击刚操作列的下载,将证书文件下载到本地。

  2. 解压缩后,可获得相关类型的证书文件。其中包含 Nginx 文件夹和 CSR 文件。

  3. 登录云服务器,进入nginx配置文件所在目录(我的是/etc/nginx)

  4. 编辑nginx.conf

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    server {
    #SSL 访问端口号为 443
    listen 443 ssl;
    #填写绑定证书的域名
    server_name www.domain.com;
    #证书文件名称
    ssl_certificate 1_www.domain.com_bundle.crt;
    #私钥文件名称
    ssl_certificate_key 2_www.domain.com.key;
    ssl_session_timeout 5m;
    #请按照以下协议配置
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
    location / {
    #网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
    root /var/www/www.domain.com;
    index index.html index.htm;
    }
    }
  5. 在 Nginx 执行目录下,通过执行以下命令验证配置文件问题(我的是/usr/sbin/nginx)

    1
    ./nginx -t
  6. 重启Nginx

  7. 若需要使HTTP的请求自动转到HTTPS上来,可增加如下配置到nginx.conf中,改完重启即可

    1
    2
    3
    4
    5
    6
    7
    server {
    listen 80;
    #填写绑定证书的域名
    server_name www.domain.com;
    #把http的域名请求转成https
    return 301 https://$host$request_uri;
    }

HTTPS访问验证

现在我们可以在浏览器中使用HTTPS协议来访问我们的网站了,有身份证果然安全感增加了好多!

安全的网站
安全的网站

参考文献

[1] 腾讯云-域名型证书申请流程

[2] 百度百科-SSL证书

[3] 腾讯云-如何选择证书安装类型