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~(雾
准备工作
- 开设好了的 WordPress 以及可以正常访问的域名
- 不用钱(免费 SSL 证书你值得拥有)
- 一点 Linux 知识(依旧本文会介绍)
脑子- 来个BGM
申请免费的 SSL 证书
首先打开腾讯云的 SSL证书页面,点这里,在完成注册并完成实名验证后(不多介绍惹,很简单der),猛击点击立即购买
,跳转到购买界面
当你看到价格时,心想这不是坑我吗,这价格略贵吧喂!(
不用着急,仔细看看是有免费的 SSL 证书的,选择下图中的域名型免费版(DV)
,就可用申请由 TrustAsia签发的单域名、年限为1年的 SSL 证书啦
接着填如你的域名地址和你的邮箱,下面的不用管,直接下一步就完成了申请
- 说起来为什么用腾讯云申请 SSL 证书而不用阿里云呢?原因在于阿里云的有点迷,反正我是没太弄清楚其过程,为了简单方便起见就用腾讯云好了
验证域名身份
为了确定这个域名是你的,需要验证你的身份。点击手动 DNS 验证
出现的这些信息很重要,是需要添加到你的域名的 DNS 解析中完成验证的,先不要关闭
回到你的阿里云控制台的域名页面,找到你的域名右侧的解析,点击添加规则,对照着刚才那个页面的信息填入以下内容,然后点击确定即可
再返回你的腾讯云 SSL 证书这里,点击完成验证
就验证完成了
下载证书并上传到服务器的 Nginx 里
在腾讯云 SSL 证书管理这里,当完成验证后状态应显示为已颁发,此时就可用点击右侧的下载
将你的证书文件下载下来。下载之后里面提供了各种证书文件,我们要用到的是 Nginx 的,找到下图中这两个文件,将其解压
出来,然后再打包成 Zip 格式
,确保打包后的 Zip 文件中只有这两个文件
然后打开之前装好的 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 访问啦
配置你的 WordPrss 以支持 Https
当我们兴奋地用 https 访问的时候,却惊奇地发现网页出现了一大堆异常状况,比如图片显示不出来,文章无法访问等,不用担心,这只是因为你还没有配置好而已
打开 WordPress 后台界面,将上次修改过的地址前面的 http 修改成 https
然后点击插件-安装插件
,搜索Really Simple SSL,这是一个很简单地自动为你的 WordPress 配置好你的 SSL 证书的插件,安装之后根据提示完成就可以啦!
完成!
这时候再直接访问你的域名,看到了地址栏前面的小锁,点击它可以看到绿色的连接是安全的,爽到~
这样一来 Chief's Lab 就完成了全面 HTTPS 化了,看起来舒服多了,也许接下来需要的就是 SEO 优化以增加搜索引擎的排名,让我的 Lab 能被搜到了……这个下次再说(咕咕咕
Comments | NOTHING