WordPress+七牛云存储插件之HTTPS(SSL证书)
一、环境准备
Ubuntu 14.04、Apache 2.4.7、Lets Encrypt、Git
其实配置起来还是蛮简单的,我们使用第三方工具按照步骤来安装就好。但是如果想要深入了解可能要涉及到更深的背景知识:RSA算法、DES算法、CA机构等等,随便哪个方向都够学习一阵子的。
二、概念了解
2.1 https 与 http 的区别
HTTPS,全名叫安全的超文本传输协议(HyperText Transfer Protocol Secure),为啥是安全的超文本传输协议呢?
1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全(
HTTP+加密+认证+完整性保护 = HTTPS )。
2.2 SSL证书
SSL证书没有所谓的“品质”和“等级”之分,只有三种不同的类型。
SSL证书需要向国际公认的证书证书认证机构(简称CA,Certificate Authority)申请。
CA机构颁发的证书有3种类型:
域名型SSL证书(DV SSL):信任等级普通,只需验证网站的真实性便可颁发证书保护网站;
企业型SSL证书(OV SSL):信任等级强,须要验证企业的身份,审核严格,安全性更高;
增强型SSL证书(EV SSL):信任等级最高,一般用于银行证券等金融机构,审核严格,安全性最高,同时可以激活绿色网址栏。
如果是个人博客、中小企业网站和一些传统行业的形象展示类网站,一般来说只需要申请一个域名型SSL证书(DV SSL)就足够了,一方面这类网站确实没有值得加密的信息,而且HTTPS在国内普及率不高,国内网民对这个也不太重视,另一方面DV SSL证书申请流程简洁,费用低,甚至有一些可以免费申请。比如说我们要用到的 Lets Encrypt。
三、安装 Lets Encrypt
3.1 简介
Let’s Encrypt 是一个新的证书颁发机构(CA),它提供了一个相对简便的方法来帮助用户自动获取并安装免费的TLS/SSL证书,从而为web服务器开启加密的HTTPS协议。它由 ISRG(Internet Security Research Group,互联网安全研究小组)提供服务,而 ISRG 是来自于美国加利福尼亚州的一个公益组织。Let’s Encrypt 得到了 Mozilla、Cisco、Akamai、Electronic Frontier Foundation 和 Chrome 等众多公司和机构的支持,发展十分迅猛。
3.2 安装流程
3.2.1 安装 let Encrypt
我们需要做的第一件事是更新包管理器缓存:
sudo apt-get update
我们一般把第三方的软件安装到 opt 文件夹里面:
sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt
3.2.2 初始化SSL证书
Let’s Encrypt client 能够自动化生成 Apache SSL证书,用起来还是很方便的。
访问letsencrypt目录:
cd /opt/letsencrypt
要执行交互式安装程序,并获得单个域名的证书。运行 letsencrypt-auto 命令的方法:
./letsencrypt-auto --apache -d example.com(换成你自己的域名)
如果一切顺利,您现在应该有证书文件 /etc/letsencrypt/live/*****/
3.2.3 使用ssl证书
我们要开启 Apache2 中的 SSL模块:
sudo a2enmod ssl
要使HTTPS运行,我编辑了我的Apache2配置来设置SSL模块,我们需要在 apache2 的配置文件夹 site-available 里面,我们需要为我们对应的域名创建一个 .conf(其设置方式和其他设置方式一样) ,来使得我们的域名通过 443 端口找到我们的证书:
比如,在我的文件夹下面有 001-defaul.conf ,是将域名 zhaoshuai.me 解析到我的WordPress的配置文件:
然后我们执行完成生成ssl证书的之后,应该会生成一个相对应的文件 001-default-le-ssl.conf,我们可以注意到,此时监听的端口是443:
如上面小图所示,需要在最后添加(将*****换成你的域名):
SSLCertificateFile /etc/letsencrypt/live/*****/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/*****/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
ServerName ******
SSLCertificateChainFile /etc/letsencrypt/live/*****/chain.pem
配置完成之后,重启apache2:
sudo service apache2 restart
3.2.4 设置更新
Let’s Encrypt 证书的有效期为90天,因此建议每60更新一次证书。 好在 Let’s Encrypt Client 有一个自动更新命令,可自动检测当前安装的证书,并在证书即将过期的30天内自动续期证书。
cd /opt/letsencrypt/
./letsencrypt-auto renew
确保您的证书永不过期一种实用的方法是创建一个cron计划任务,该任务程序将定期为您执行自动续期命令。 编辑crontab来创建每过一周就运行命令续期的计划任务。以root用户身份编辑crontab,运行:
sudo crontab -e
30 2 * * 1 /opt/letsencrypt/letsencrypt-auto renew >> /var/log/le-renew.log
保存并退出。这时,将创建一个新的cron计划任务:“在每周星期一凌晨2:30执行letsencrypt自动续期命令。” 而程序的日志文件会储存在 /var/log/le-renewal.log。
四、设置wordpress
安装完成ssl证书之后,我们发现博客上很多东西都打不开了,不慌,我们还需要设置一些东西。
4.1 设置-常规
将 WordPress地址(URL) 和 站点地址URL都改成 https:
4.2 设置WP Super Cache、WPJAM七牛镜像存储
将所有的前缀为http 的换成 https
4.3 设置 upload_url_path
在 https://你的域名/wp-admin/options.php ,ctrl + f 找到 upload_url_load,将 http 换成 https:
五、设置七牛云
当我们设置完成上面之后,我们发现,博客是能够打开了,但是好像很多图片都显示不出来,这是因为我们之前设置的七牛云对象存储空间(具体的请查看【笔记】wordpress+七牛云存储插件之CDN加速)的外链是 HTTP ,没有走HTTPS:
5.1 申请SSL证书
我们去七牛云的之前创建的对象存储空间,可以看到我们的qiniu.zhaoshuai.me绑定的这个域名,然后我们需要去 七牛云SSL证书 去购买一个免费的证书:
购买完成之后需要补全信息,需要的注意的是在填写的域名信息的时候,将域名填写成 qiniu.zhaoshuai.me(也就是你对应的对象存储绑定的CDN加速域名的信息),这个很关键,因为证书和域名是一一对应的,在下面会用到。
5.2 升级 qiniu.zhaoshuai.me 为https
在SSL证书通过验证之后,找到创建的对象存储空间,在空间概述里面找到我们绑定的CDN域名,可以看到一个升级到HTTPS的按钮,之后可以选择之前我们申请的 SSL证书,通过验证之后就可以啦:
六、大功告成
现在再试试,应该就能顺利打开我们的博客啦啦,是不是前面多了一个绿色的小锁:
参考文献:
1、推酷HTTPS and HTTP2 on Apache2 with Let’s Encrypt