以前我们浏览网页使用的都是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证书?请参考以下文档:

华为云证书管理服务

阿里云SSL证书服务

步骤三:WordPress启用HTTPS协议

登录WordPress后台,『设置』→ 『常规』,将WordPress地址(URL)与站点地址(URL)由https://www.useclouds.cn 改为https://www.useclouds.cn ,然后点击『保存更改』按钮保存WordPress配置。

步骤四:HTTPS访问效果验证

部署成功后,在浏览器的地址栏中输入 https://www.useclouds.cn 回车,如果浏览器地址栏显示安全锁标识,则说明证书安装成功,如下图所示。


本文转自 云引未来-www.useclouds.cn

WordPress安全篇(1):WordPress网站启用HTTPS详细教程的更多相关文章

  1. 记一次免费让网站启用HTTPS的过程

    写在前面 个人网站运行将近2个月了,期间根据酷壳的一篇教程如何免费的让网站启用HTTPS做了一次,中间遇到问题就放下了.昨天孙三苗问我网站地址说要添加友链,出于好奇想看他网站长什么样,顺道也加一下友链 ...

  2. 如何免费的让网站启用https

    本文源自酷壳:如何免费的让网站启用HTTPS 今天,我把CoolShell变成https的安全访问了.我承认这件事有点晚了,因为之前的HTTP的问题也有网友告诉我,被国内的电信运营商在访问我的网站时加 ...

  3. 如何为网站启用HTTPS加密传输协议

    前言 当今时代对上网的安全性要求比以前更高,chrome和firefox也都大力支持网站使用HTTPS,苹果也从2017年开始在iOS 10系统中强制app使用HTTPS来传输数据,微信小程序也是要求 ...

  4. Java自动化测试框架-07 - TestNG之Factory篇 - 欢快畅游梦幻工厂(详细教程)

    简介 最近忙着装修博客园,没时间更新文章,今天终于抽出时间把上次写的一半的文章给写完了,新的博客园风格,希望大家喜欢.今天继续介绍testng的相关知识--工厂. 工厂允许你动态的创建测试.例如,假设 ...

  5. 🔥《手把手教你》系列练习篇之1-python+ selenium自动化测试(详细教程)

    1.简介 相信各位小伙伴或者同学们通过前面已经介绍了的Python+Selenium基础篇,通过前面几篇文章的介绍和练习,Selenium+Python的webUI自动化测试算是 一只脚已经迈入这个门 ...

  6. 《手把手教你》系列练习篇之5-python+ selenium自动化测试(详细教程)

    1.  简介 今天我们继续前边的练习,学习和练习一下:如何使用webdriver方法获取操作复选框-CheckBox.测试不同的分辨率.如何断言title.如何获取某一个元素的text属性值等等,这些 ...

  7. 阿里云服务器,http免费转https详细教程

    1.搜ssl证书,点击立即购买 2.这里我们选择免费证书,点击右边立即购买,去支付 购买完成之后,申请证书状态会显示在审核中,不过很快的,几分钟就申请成功了,以下就是我申请成功的界面,因为我服务器用的 ...

  8. 《手把手教你》系列练习篇之2-python+ selenium自动化测试(详细教程)

    1. 简介 今天我们还是继续练习练习基本功,各位小伙伴要耐住住性子,要耐得住寂寞啊,不要急躁,后面你会感谢你在前边的不断练习的.到后面也是检验你前边的学习成果的一次很好实践. 本文介绍如何通过link ...

  9. 《手把手教你》系列练习篇之3-python+ selenium自动化测试(详细教程)

    1.  简介 前面介绍了,XPath, id , class , link text, partial link text, tag name, name 七大元素定位方法,本文介绍webdriver ...

随机推荐

  1. mybatis常用功能总结

    mybatis-plus常用功能总结-以User表为例 1.数据库 id name age email create_time update_time version deleted 1 mary 2 ...

  2. 解决Latex输出PDF纸张自适应大小及中文无法显示问题

    遗留的问题 之前我们进行了基于texlive定制chemfig化学式转换Python服务镜像,虽然完成pdf的输出服务改造,但是输出效果并不是太好,如下图: 这个图有两个比较严重问题 不支持中文 空白 ...

  3. Git安装教程最新版本(国内gitee国外github)

    Git安装教程最新版本(国内gitee国外github) 欢迎关注博主公众号「Java大师」, 专注于分享Java领域干货文章, 关注回复「资源」, 获取大师使用的typora主题: http://w ...

  4. macos查看端口状况

    Mac OS netstat命令与CentOS 略有出入 在Mac上正确使用的方法是:即-f需要加上地址族,-p需要加上协议TCP或者UDP等 如果需要查询inet:netstat -anvf ine ...

  5. [bug] Python:“TabError: inconsistent use of tabs and spaces in indentation”

    原因 代码中混用了Tab和4个空格 参考 https://blog.csdn.net/dongdong9223/article/details/82745068

  6. Ansible_主机变量和主机组变量的演示

    一.主机变量和主机组变量的演示 1.主机变量和主机组变量的基本语法和规则 请访问:https://www.cnblogs.com/itwangqiang/p/13592362.html 2.首先在/e ...

  7. 058.Python前端Django与Ajax

    一 Ajax简介 AJAX(Asynchronous Javascript And XML)翻译成中文就是"异步Javascript和XML".即使用Javascript语言与服务 ...

  8. 057.Python前端Django模型ORM多表查询

    一 基于对象的查询 1.1 一对多查询 设计路由 from django.contrib import admin from django.urls import path from app01 im ...

  9. python程序打包成exe(使用pyinstaller)

    pyinstaller下载地址:https://github.com/pyinstaller/pyinstaller/ (这个文件能够自动安装依赖项,其他版本的貌似还要自己安装依赖项) 下载之后解压到 ...

  10. 10.2-3 ifup&ifdown:激活与禁用网络接口

    ifup:激活网络接口     ifup 和 ifdown 命令用于激活指定的网络接口.ifup命令其实是一个Shel脚本,有Shel基础的读者可以使用which命令来找到这个脚本并读一读.命令可读取 ...