前言

这次我们起将我们搭建好的BLOG升级成为HTTPS网站,基于搬瓦工VPS,centos 6 nginx,wordpress

为什么要升级成为HTTPS网站呢

原因有三,HTTP明文传输面临以下风险

(1) 窃听风险(eavesdropping):第三方可以获知通信内容。

(2) 篡改风险(tampering):第三方可以修改通信内容。

(3) 冒充风险(pretending):第三方可以冒充他人身份参与通信。

说白了举个例子,我们大家平常在上网的时候,网页上总是莫名其妙弹出本地(此处应有黑人问号)的广告,大家一定会奇怪为什么吧,那是因为我们本地的ISP服务商纂改的传输流量,插入广告以谋取利益,所以,升级成为HTTPS网站后至少可以让你免除这些烦恼,开始动手吧

0x01

HTTPS原理:http+ssl/tls

图片来自网上

0x02

申请一个免费的证书

这里我们到LET’S Encrypt申请,如果需求不同的话,比如公司、企业等可以申请更为高级的证书,不过是需要付费的,但是网站的HTTPS绿头会显示公司的名称等信息,表示安全性更高

let’t encrypt官方说明

https://letsencrypt.org/getting-started/

使用Shell访问
建议大多数具有shell访问权限的人使用Certbot ACME客户端。它可以自动执行证书颁发和安装,无需停机。它也有不想自动配置的人的专家模式。它易于使用,适用于许多操作系统,并具有很好的文档。访问Certbot站点以获取操作系统和Web服务器的自定义说明。

0x03

安装cerbot

https://certbot.eff.org/#centosrhel7-nginx

我这里选择了我的主机所对应的系统和架构,里面有详细的命令说明,当然,我这里选择了现成的安装包,命令如下

  • wget https://dl.eff.org/certbot-auto # 下载certbot
    chmod a+x certbot-auto # 增加可执行权限
  • ./certbot-auto # 获取依赖库并更新客户端代码

0x04

申请证书

  • ./certbot-auto certonly –webroot -w /你的网站路径 -d yourdomain.com
  • 大家这里可能会问前俩天你不是用PUTTY的吗,怎么换成XSHELL了?原因是PUTTY感觉连接不稳定,一段时间不操作就掉线了,XSHELL功能多一点,但我能说2个都很慢吗·····半斤八两吧
  • 大家有没有注意到上面有一个提示说命令不存在,这不得不说又是一个大坑了

0x05

消除错误

提示:缺少python虚拟环境,只能说搬瓦工的VPS就是这样,便宜,但是有些必备的东西得自己动手,折腾

我们来使用virtualenv搭建独立的Python环境,以便能够生成自己的证书,如果你是搬瓦工centos 6的话这一步是避免不了的,命令如下:

  • virtualenv实际上是一个python包,所以我们可以用easy_install或者pip安装。下面介绍在CentOS系统上的安装方法。easy_install安装方式:
    1
    2
    [root@localhost ~]# yum install python-setuptools python-devel
    [root@localhost ~]# easy_install virtualenv

    pip安装方式:

    1
    2
    [root@localhost ~]# easy_install pip
    [root@localhost ~]# pip install virtualenv

    yum安装方式(epel源):

    1
    [root@localhost ~]# yum install python-virtualenv

安装完成后我们再生成证书,也会有一些提示,说不能在此路径默认生成等问题,还有让你输入邮箱订阅什么的,为了简便而行,我们都忽略它,生成成功后,可以看到,在/etc文件夹下我们有了一个letsencrypt文件夹

  • 看上面2个图,这里要特别注意,使用/certbot-auto certonly –webroot -w /你的网站路径 -d yourdomain.com 一定要是你的网站路径,因为我们这里使用的是webroot命令
  • 生成成功后会有congratulations!和证书的保存路径,路径要记住,后面会用到

0x06 

配置nginx

那么首先第一步,我们要找到nginx的配置conf文件在哪,有的同学会问了,怎么/etc文件夹下没有?由于我们使用LNMP一键安装的,因此我们是修改我们添加的虚拟主机的配置文件,我的配置文件在/usr/local/nginx/conf/vhost/域名 下,用心找找,总能找到的,网上的路径不一定也是你的路径哦,这一点很重要,不然你会发现怎么修改都无法达到预期效果

这里我们直接将server内的内容复制到网站conf配置文件,具体内容如下

  • server {
    listen 443;
    server_name yourdomain.com;
  • ssl on;
    ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
  • ssl_session_timeout 1d;
  • ssl_protocols SSLv2 SSLv3 TLSv1;
    ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
    ssl_prefer_server_ciphers on;
  • }
  • 注意里面有域名需要修改

使用nginx -t检查配置是否都OK,如果还有问题,可以根据提示一一改正下。直到配置都OK

  • 然后重新加载nginx服务
  • nginx -s reload

0x07

更新wrodpress后台连接

以上全都配置好之后,就可以着手更新wordpress后台配置,以使博客下所有资源的加载都走https。首先需要修改的是网站地址和WordPress地址,在WordPress后台设置-常规那里修改。之前为http,现在全部改为https开头的地址。

然后我们就可以愉快的通过https访问我们的网站了

0x08

自动更新证书

我们申请的证书有效期只有3个月,如果不想某一天访问自己的网站的时候,突然上不去了那么最好设置一下自动更新,这里我们会用到linux下的定时任务crontab

举个例子

首先找个地方新建一个脚本

  • #!/bin/bash
    set -o nounset
    set -o errexit
  • /root/certbot-auto renew  –dry-run #自动更新证书的命令

然后输入crontab -e编辑定时任务

  •            0 2,13 * * * root /脚本路径/ssl-cert-update.sh #这个设置每天2,13点进行更新,这是根据你服务器的时间,如果在美国的话,那么换算成北京时间是早上10点晚上10点各一次

我这里就不设置定时更新了,主要是SSH远程登陆VI文件能打开,修改完了保存不了,直接卡死,有点无语,只能手动挡了

 

结束语

本篇说实话还是有一些难度的,主要用到了证书的生成和设置自动更新,什么?你问我为什么linux下定时任务怎么这么麻烦,我只能说,各有特色吧,linux下更为强大,可以自由定制,你不但可以执行脚本,还可以执行命令,可能相比起来windows下的图形操作更为直观,但是功能就那么多不是吗?第二个大坑就是搬瓦工vps下的python虚拟环境的缺失,这需要我们自己安装,第三个就是我们在配置nginx的https访问的conf文件设置,这里尤其要注意路径的问题,这关系到你有没有配置对conf文件,还有关于全站强制访问https的问题,这里再说明一下,我们可以利用301重定向来强制访问http的用户也访问https,只要再加几句话就可以了,我这里就不设置了。

  • server {
    listen 80;
    server_name yourdomain.com;
  • return 301 https://yourdomain.com$request_uri;
  • }

我们在配置网站升级成为https网站时说实话坑还是比较多的,我的博客后面应该会取消HTTPS访问,主要是因为服务器位置原因,访问速度实在是太慢啦,虽然https也不会拖累多少,但对于我这样的强迫症患者来说,还是宁愿牺牲安全性换来一点点的速度了,至少后台我会设置为http访问,如果是https的话我在操作都很慢,更别说访问者了

那么我们关于网站的配置就告一段落,这俩天我们

  • 升级了https访问
  • 更换了主题,美化了界面,升级了wordpress最新版和必要的插件

接下来我们对于界面的优化美化我可能不会再单独发文,接下来我们将进入信息安全的范畴,先从web安全出发

哈哈,让我们转变下风格,愉快的开始下一阶段的学习

 

 

 

 

 

 

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注