给WordPress添加HTTPS

HTTPS和HTTP

HTTPS是超文本传输协议,用来建立浏览器和服务器之间的通讯服务,HTTP在传输请求头报文是明文传输,这将带来很多的隐患,HTTPS因此诞生。

HTTPS在其超文本传输协议上增加了SSL安全协议,来加密请求头的报文,以达到传输数据加密的效果。

HTTPS和HTTP的区别:

  • HTTPS比HTTP更加安全,使用SSL安全协议对数据进行加密。
  • HTTPS需要申请CA证书,免费证书较少(我使用阿里云的免费证书),需要支付一些费用。
  • HTTP使用80端口进行通信,而HTTPS使用443端口进行通信

申请阿里云免费证书




支付完成后,需要签发。

填写相应信息即可,等待CA验证通过。

当验证通过后,可以下载证书,部署到服务器中。

NGINX配置SSL证书

下载申请好的证书,会得到一个key文件和pem文件。
key文件就是SSL证书的秘钥,pem文件是公钥。

通过FTP或其他方式将这两个文件上传至服务器后,修改nginx配置文件。

listen 443 ssl; # 监听443端口
if ($server_port !~ 443){  # 强制跳转至HTTPS协议
    rewrite ^(/.*)$ https://$host$1 permanent;
}

ssl_certificate    filepath/fullchain.pem; # 公钥文件
ssl_certificate_key    filepath/privkey.key; # 密钥文件
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; # 依赖SSLv3和TLSv1协议的服务器密码将优先于客户端密码
ssl_session_cache shared:SSL:10m; # 设置存储session参数的缓存的类型和大小
ssl_session_timeout 10m; # 指定客户端可以重用session参数的时间

重载nginx配置。
使用nginx -t 检测配置 返回successful表示可用

注意以下几点

  • --with-http_ssl_module 需要编译到nginx中
  • 服务器需要安装openssl、openssl-devel

WordPress配置HTTPS

在左边栏找到设置->常规


修改链接中的http为https
如果配置后不生效的话,找到WordPress根目录,需要修改两个文件

// 根目录/wp-includes/http.php
// 546行
$parsed_home['host'] ) === strtolower( $parsed_url['host'])
// 修改为
(strtolower( $parsed_home['host'] ) === strtolower( $parsed_url['host']) || "localhost" === strtolower( $parsed_url['host']))

// 根目录/wp-config.php增加如下代码
$_SERVER['HTTPS'] = 'on';
define("FORCE_SSL_LOGIN", true);

define("FORCE_SSL_ADMIN", true);
// 在最后的if判断前增加,否则会不生效

至此给WordPress添加HTTPS就完成了

点赞
  1. 沈唁志说道:
    Google Chrome Mac OS X 10.14.4

    https不用改wp的文件,这些一更新就会覆盖 :huaji:

    1. sAm说道:
      Google Chrome Windows 10

      是哦。之前配置的时候一直不生效 :huaji3:

  2. 沈唁志说道:
    Google Chrome Mac OS X 10.14.4

    :huaji3: :huaji6: :huaji20: 这表情好

发表评论

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