早有给这个小Blog添加TSL的计划,耐于麻烦( 懒的折腾 )拖到现在,在更新上一篇文章的时候,出现了使用 “Block Editor”编辑器 发布失败的情况。查阅有关资料安装了经典编译器的插件,但碍于插入代码太不方便且不习惯。阅读源码进行深入排查(大约花了5h),排查后发现应该是PHP版本存在问题,故升级了PHP版本到7.1。升级过程中遇到了种种问题,便重新安装了WordPress,想到Https化的打算,便在重新安装的过程中添加了Https,以下具体介绍一下安装TSL的方法。
SSL/TLS协议的基本思路是采用公钥加密法,也就是说,客户端先向服务器端索要公钥,然后用公钥加密信息,服务器收到密文后,用自己的私钥解密。因此,要加入Https必须要有个证书,然而公开证书有有点贵,用CloudFlare的30年证书又容易报502,因此本文选用了腾讯云的SSL证书。
首先需要打开腾讯云的页面,选购SSL证书,我们这里采用了域名免费版(DV)作为这个网站的证书
按所给表单填写,填写后,在所对应的DNS托管商添加所给TXT记录,等待一段时间即可验证。
一段时间后,腾讯云会发给你确认文件。此时,我们可以在我的-SSL证书中看到我们申请的证书。点击操作中的下载,我们会下载到一个包含公钥的文件,选择对应框架的公钥,通过Xftp等软件Post到服务器的 /usr/local/nginx/conf 目录下
Post完成后,我们修改 /usr/local/nginx/conf/nginx.conf ,修改以下内容:
server {
#SSL 访问端口号为 443
listen 443 ssl;
#填写绑定证书的域名
#此处可以填写 server_name _;
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;
}
}
用:wq保存文件并退出,到 nginx 的根目录上运行
./sbin/nginx -t
若无报错,及说明SSL添加成功。
当添加后出现网站信息排版错误时,可参见这篇文章进行排查解决