WordPress 全站启用 HTTPS

本来没想这么早加 HTTPS,之前在家里访问后台的时候,直接弹出一个广告……于是开始着手搞全站 HTTPS;

主要有三步:申请证书、安装证书、设置站点 HTTPS 访问;

申请证书

直接用了腾讯云的,免费一年;腾讯云文档在这里

路径:域名与网站 -> SSL证书管理 -> 申请证书,填写信息,验证身份;

验证通过后,就可以到证书管理里下载证书文件了,下载解压后会有不同服务器下的证书,我用的是Apache;

从我填完申请信息到审核通过,差不多半小时;

安装证书

服务器是 Ubuntu 16、Web 服务器是 Apache 2.4.18;

网上找了一圈,很多都是 Apache 1.x 版本的安装方法,完全找不到对应的配置文件在哪儿,这也是写这篇文章的动机;

最终是在 阿里云的文档 中找到了解决方案,腾讯云文档 里虽然写的是2.x版本,但对照文档,找不到那些文件;

下面的步骤基本是摘抄自阿里云文档的,但还是要记录一下,方便日后查阅:


1、将第一步中下载下来的证书传到服务器上;


2、启用SSL模块,用的是 apache 自带的 ssl_mod 模块;

sudo a2enmod ssl

SSL模块启用后,/etc/apache2/sites-available 下会生成一个 default-ssl.conf 文件。


3、修改配置文件 default-ssl.conf 安装证书,下载下来的证书文件有三个:1_root_bundle.crt,2_www.domain.com_cert.crt 和私钥文件 3_www.domain.com.key,腾讯这点儿比较好,通过名称就能很好的区分出来

<VirtualHost *:443>
    # 下面三个值默认应该就是这样的,不用动
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www
    SSLEngine on
    # 下面三个值对应三个证书的位置
    SSLCertificateFile /usr/local/apache/conf/2_www.domain.com_cert.crt
    SSLCertificateKeyFile /usr/local/apache/conf/3_www.domain.com.key
    SSLCertificateChainFile /usr/local/apache/conf/1_root_bundle.crt

配置文件中内容较多,需要看好注释,配置内容包含了自签名和第三方证书,默认开启的是自签名证书,需要把他们注释掉,在对应位置添加上面代码中的三个地址;

还一个需要注意的地方: <VirtualHost *:443>


4、把 default-ssl.conf 映射至 /etc/apache2/sites-enabled 文件夹中建立软链接、实现二者之间的自动关联,执行以下命令:

sudo ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/001-ssl.conf


5、重新加载 Apache2 配置文件并重启

sudo /etc/init.d/apache2 force-reload
sudo service apache2 restart

重启后,就能通过 https 访问到页面了;

设置站点 HTTPS 访问

设置之前,一定要保证 https 能访问到页面;有几个地方需要改:

1、进入 wp 后台,在 设置 – 常规 中,将 WordPress地址 和 站点地址 都改为 https 的;这个是改了网页中所有的动态地址;


2、修改或新建根目录下的 .htaccess 文件,内容如下:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{SERVER_PORT} !^443$
    RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    // 其他代码 ……
</IfModule>

如果之前 配置过固定链接 的,应该是有这个文件的,这时只需增加第二三个字段,RewriteCond 和 RewriteRule 即可;这一步是将所有 http 访问的请求 301 重定向为 https 的请求;


3、修改文章中写死的 http:// 资源,这一步是直接修改数据库,修改之前先备份数据库

update wp_posts set post_content = replace(post_content, 'http://','https://')


最终,可以在 这儿 检测一下自己的网站,会有一些兼容性、安全性的检测;

如果这篇文章对你有用,可以点击下面的按钮告诉我

0

发表回复