HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

什么要给我的域名添加 SSL 证书呢?原因是为了将 Chief's Lab 全站 HTTPS化;而为什么要 HTTPS化呢?我们知道,HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。

还有很重要的一点,那就是http页面在浏览器地址栏中会显示一个不安全的字样,看着是在太别扭难受惹,为了变成一把小锁看着舒服点,启动 HTTPS 还是很重要der~(雾

Alt

准备工作

  1. 开设好了的 WordPress 以及可以正常访问的域名
  2. 不用钱(免费 SSL 证书你值得拥有)
  3. 一点 Linux 知识(依旧本文会介绍)
  4. 脑子
  5. 来个BGM

申请免费的 SSL 证书

首先打开腾讯云的 SSL证书页面,点这里在完成注册并完成实名验证后(不多介绍惹,很简单der),猛击点击立即购买,跳转到购买界面

Alt

当你看到价格时,心想这不是坑我吗,这价格略贵吧喂!(

不用着急,仔细看看是有免费的 SSL 证书的,选择下图中的域名型免费版(DV),就可用申请由 TrustAsia签发的单域名、年限为1年的 SSL 证书啦

Alt

接着填如你的域名地址和你的邮箱,下面的不用管,直接下一步就完成了申请

Alt

  • 说起来为什么用腾讯云申请 SSL 证书而不用阿里云呢?原因在于阿里云的有点迷,反正我是没太弄清楚其过程,为了简单方便起见就用腾讯云好了

验证域名身份

为了确定这个域名是你的,需要验证你的身份。点击手动 DNS 验证

Alt

出现的这些信息很重要,是需要添加到你的域名的 DNS 解析中完成验证的,先不要关闭

Alt

回到你的阿里云控制台的域名页面,找到你的域名右侧的解析,点击添加规则,对照着刚才那个页面的信息填入以下内容,然后点击确定即可

Alt

再返回你的腾讯云 SSL 证书这里,点击完成验证就验证完成了


下载证书并上传到服务器的 Nginx 里

在腾讯云 SSL 证书管理这里,当完成验证后状态应显示为已颁发,此时就可用点击右侧的下载将你的证书文件下载下来。下载之后里面提供了各种证书文件,我们要用到的是 Nginx 的,找到下图中这两个文件,将其解压出来,然后再打包成 Zip 格式确保打包后的 Zip 文件中只有这两个文件

Alt

然后打开之前装好的 Xshell,准备远程连接你的服务器并上传证书。在连接成功之后依次输入以下内容

#安装 rz sz 文件传输
yum -install -y lrzsz

#进入 Nginx 目录
cd /usr/local/nginx/
#创建一个叫 cert 的文件夹
mkdir cert
#进入 cert 文件夹
cd cert/

#将刚才打包的证书 Zip 压缩包发送到服务器
rz
#解压
unzip cert.zip
#删除压缩包
rm cert.zip

#进入 Nginx配置文件目录
cd ../conf/
#使用 vim 编辑配置文件
vim nginx.conf
  • 这里提一下 vim 编辑器,具体的内容可以谷歌百度找到相关教程,不过这里我们只需要用到几点,一是按 i 进入编辑模式(这时候你才能修改内容),二是输入完成之后需要按 esc 返回命令模式,三是在命令模式下按 : 进入底线命令模式,这时输入 q 是退出,w 是保存, wq 是保存并推出, q! 是不保存强制退出(重要)

这时候就进入了 Nginx 的配置文件中了,用方向键往下找到 server 部分,修改添加部分内容,如下

#第一个 server 块,文件中本身就存在,只需要修改添加部分
server
    {
        listen 443;                                           #修改 80 default_server 为 443
        #listen [::]:80 default_server ipv6only=on;
        server_name lab-ch76.top;                             #改成你域名的名字
        index index.html index.htm index.php;
        root  /home/wwwroot/default;

        #添加 SSL 相关配置
        ssl on;
        ssl_certificate   ../cert/1_lab-ch76.top_bundle.crt;  #根据具体情况更改文件名
        ssl_certificate_key  ../cert/2_lab-ch76.top.key;      #这里也是
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        # SSL 配置结束
        #略过一大段......
    }

#第二个 server 块,用来让 http 访问的强制转发到 https 访问,需要自己添加
server
    {
        listen 80 default_server;
        rewrite ^(.*) https://host1 permanent;
    }

按 Esc 然后输入:wq回车保存并退出

#进入端口设置
vim /etc/sysconfig/iptables

检查是否开启了 443 端口,即是否存在-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT,如果没有,请在中间任意一行添加,但是不要添加到文件最前或者最后,修改完成后按 Esc 然后输入:wq回车保存并退出

#关闭 Nginx
nginx -s stop
#如果有报错,根据错误信息修改相关设置,直到没有错误可以关闭为止
#进入 Nginx 启动目录
cd /usr/local/nginx/sbin/
#启动 Nginx
./nginx
#检查是否开启了 443 端口监听
netstat -anp

出现下图中的文字代表 443 端口监听正常,这时候就可以用 https 访问啦

Alt


配置你的 WordPrss 以支持 Https

当我们兴奋地用 https 访问的时候,却惊奇地发现网页出现了一大堆异常状况,比如图片显示不出来,文章无法访问等,不用担心,这只是因为你还没有配置好而已

打开 WordPress 后台界面,将上次修改过的地址前面的 http 修改成 https

Alt

然后点击插件-安装插件,搜索Really Simple SSL,这是一个很简单地自动为你的 WordPress 配置好你的 SSL 证书的插件,安装之后根据提示完成就可以啦!

完成!

这时候再直接访问你的域名,看到了地址栏前面的小锁,点击它可以看到绿色的连接是安全的,爽到~

Alt

这样一来 Chief's Lab 就完成了全面 HTTPS 化了,看起来舒服多了,也许接下来需要的就是 SEO 优化以增加搜索引擎的排名,让我的 Lab 能被搜到了……这个下次再说(咕咕咕

Alt