以前我们浏览网页使用的都是HTTP协议,HTTP使用明文传输,所以传输过程中很容易遭受黑客窃取、篡改数据,很不安全。在WordPress网站上启用HTTPS协议访问后,能大大提升站点的安全性,启用HTTPS协议的网站也更容易被搜索引擎收录,提升网站的访问量。
HTTPS是什么?
HTTPS(全称:Hyper Text Transfer Protocol over SecureSocket Layer)是安全的超文本传输协议,通过安装SSL证书,用户与服务器之间传输的数据是经过加密的,部署SSL证书后,采用超强加密方式以防数据中途被盗取,大大提升了安全性。要启用HTTPS必须安装SSL证书,SSL证书分收费和免费两种,企业建议购买收费证书,个人用户可考虑申请免费证书。华为云、阿里云目前都提供申请免费SSL证书服务。
注意事项:
1、申请SSL证书的前提条件必须拥有一个域名,因为SSL证书需要与域名绑定。
2、内网域名或私有IP不可以使用公网数字证书,即公网SSL证书不能配置到内网。
3、配置WordPress之前请备份WordPress数据及数据库,万一因配置不成功,可以回滚到配置前的状态。
环境信息
系统、软件名称 | 版本 | 官网下载地址 |
---|---|---|
Linux | CentOS 7.9 | CentOS 7.9 |
Nginx | Nginx 1.18.0 | Nginx 1.18.0 |
MySQL | MySQL 8.0.23 | MySQL 8.0.23 |
PHP | PHP 7.4.19 | PHP 7.4.19 |
WordPress | WordPress 5.7 | 中文版 |
操作步骤
WordPress网站全站启用HTTPS协议的流程如下所示:
①申请SSL证书并下载SSL证书 → ②WEB服务器安装SSL证书 → ③WordPress启用HTTPS协议 → ④HTTPS访问效果验证
步骤一:申请SSL证书并下载SSL证书
1、申请SSL证书
登录华为云,点击搜索工具(下图中的放大镜图标),在弹出的搜索框内输入“ccm”,选择“云证书管理服务CCM”下方的 『控制台』后打开“云证书管理服务”页面,选择『证书管理』→『SSL证书』,点击右上角的『购买证书』按钮。
证书类型选择 DV(Basic),证书品牌选择 DigiCert,其它参数默认即可,点击 『立即购买』,DigiCert的免费SSL证书的有效期为一年。
勾选 “我已阅读并同意《SSL证书管理(SCM)免责声明》”,点击右下角的 『去支付』
按钮进入下一步,接着点击 『确认付款』按钮,提示“订单支付成功!”
返回“云证书管理服务”控制台,选择『证书管理』→『SSL证书』,点击 『申请证书』。
输入证书绑定的域名,点击『下一步』按钮进入下一个页面。
填写姓名,电话,邮箱,勾选“我已阅读、理解并同意……”,点击 『提交申请』,接着点击『去DNS验证』按钮转到下一个页面。
记录好下图中的三个参数,主机记录:_dnsauth 记录类型:TXT 记录值:以20210开头的字符。
打开浏览器新建一个标签页,登录您的域名服务商的“域名解析后台”,本文以华为云的DNS解析来演示如何增加一条DNS记录。华为云添加DNS记录的操作如下,主机记录填写 _dnsauth ,类型选择TXT-设置文本记录,值填写以202105开头的字符串,然后点击 『确定』。切换到上图中的窗口,点击 『我已完成以上验证』,等待完成验证。
通常在10分钟之内就会完成域名验证,验证通过后证书的状态变更为“已签发”,现在SSL证书可以下载使用了。
2、下载SSL证书
点击上图中的『下载』,再点击下图中的 『下载证书』,将证书下载到您的电脑中。
如何在阿里云申请免费SSL证书?请点击以下链接。
在阿里云申请免费SSL证书教程
步骤二:WEB服务器安装SSL证书
1、在本地解压已下载的证书文件,文件包含了Apache、IIS、Nginx、Tomcat4个文件夹和1个“domain.csr”文件,如下图所示:
2、上传SSL证书
在WEB服务器上新建cert目录,用于存储SSL证书文件。
mkdir /etc/nginx/cert
上传SSL证书文件到WEB服务器
使用WinSCP工具以SFTP方式登录WEB服务器,上传“cert.key”及“cert.crt”到WEB服务器的 /etc/nginx/cert目录中,如下图所示。
3、修改Nginx配置文件
编辑Nginx的default.conf配置文件,修改配置前请备份default.conf。
vim /etc/nginx/conf.d/default.conf
删除server上下文中的如下配置内容
listen 80;server_name localhost;
配置SSL证书,在server上下文中添加以下配置:
listen 443 ssl;
server_name www.useclouds.cn; #修改为您证书绑定的域名
ssl_certificate /etc/nginx/cert/cert.crt; #替换成您的证书文件的路径
ssl_certificate_key /etc/nginx/cert/cert.key; #替换成您的私钥文件的路径
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5; #加密套件
ssl_prefer_server_ciphers on;
配置HTTP跳转到HTTPS,将所有访问HTTP的请求全部重定向到HTTPS,添加以下配置内容并保存配置。
server{
listen 80;
server_name www.useclouds.cn;
if ($server_port = 80){
return 301 https://$server_name$request_uri;
}
if ($scheme = http) {
return 301 https://$server_name$request_uri;
}
error_page 497 https://$server_name$request_uri;
}
default.conf配置示例如下:
server {
listen 80;
server_name www.useclouds.cn;
if ($server_port = 80){
return 301 https://$server_name$request_uri;
}
if ($scheme = http) {
return 301 https://$server_name$request_uri;
}
error_page 497 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name www.useclouds.cn;
ssl_certificate /etc/nginx/cert/useclouds.crt;
ssl_certificate_key /etc/nginx/cert/useclouds.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /data/wordpress;
index index.php index.html index.htm;
if (-f $request_filename/index.html){
rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.php){
rewrite (.*) $1/index.php;
}
if (!-f $request_filename){
rewrite (.*) /index.php;
}
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
root /data/wordpress;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
4、验证Nginx配置文件是否正确?
当回显信息如下所示,代表Nginx配置正确
[root@Linux ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
5、重启Nginx
systemctl restart nginx
如何在其它WEB服务器上安装SSL证书?请参考以下文档:
华为云证书管理服务
步骤三:WordPress启用HTTPS协议
登录WordPress后台,『设置』→ 『常规』,将WordPress地址(URL)与站点地址(URL)由https://www.useclouds.cn 改为https://www.useclouds.cn ,然后点击『保存更改』按钮保存WordPress配置。
步骤四:HTTPS访问效果验证
部署成功后,在浏览器的地址栏中输入 https://www.useclouds.cn 回车,如果浏览器地址栏显示安全锁标识,则说明证书安装成功,如下图所示。