让自己的 Wordpres 博客完美支持 HTTPS 为什么选择 HTTPS

2017-02-23 17:00:33 +08:00
 cloudL

先说一下什么是 HTTPS ,简单的说, HTTPS 就是加了密的 HTTP 。 HTTP 是以明文方式传送数据,不支持任何方式的数据加密,如果攻击者截取了用户和服务器之间的传输文本,就可以直接读懂里面信息,甚至还可以篡改其中内容。所以 HTTP 协议并不适合传输一些敏感信息,比如信用卡号、密码等。而 HTTPS 对传输的信息进行了加密,使得信息更加安全。

当然 HTTPS 并不仅仅用来加密网站内容,他同时可以认证网站的真实性,相信不少网友们都有不小心访问到钓鱼网站的经历,有了 HTTPS 后,浏览器就可以知道你所访问的网站是真实的还是他人伪造的,在网站打开前告诉你网站是否是安全的。

而对于博主朋友们,选择 HTTPS 有个更重要的原因, google 和 baidu 都已经说明自己会优先展示支持 HTTPS 的网站,相信不论是谁,都希望自己的博客能排在搜索引擎的最前面吧。

说了一堆废话,下面进入正题。

创建 SSL 证书

想要使用 HTTPS ,用户需要一个数字证书,来让假冒服务器无法冒充自己。关于数字证书,用户可以自己建立,也可以从网上购买,自己建立的证书适合在测试开发或个人项目使用。对于公共的网站,还是推荐去购买一个正规 SSL 服务商提供的证书( https://www.hostucan.cn/ssl )。

这里简单介绍一下在 Linux 下用 OpenSSL 创建证书的过程:

#用 128 位 rsa 算法生成密钥,得到 server.key 文件

openssl genrsa 1024 > server.key

#用上一步生成的密钥创建证书请求文件 server.csr ,这一步会提出很多问题要用户一一输入

openssl req -new -key server.key > server.csr

#用密钥和证书请求文件生成证书 server.crt ,-days 参数指明证书有效期,单位为天

openssl req -x509 -days 365 -key server.key -in server.csr > server.crt

一个创建好的证书的证书包含两部分: server.crt 和 server.key ,下面我们需要将他们添加到 Apache 设置中。

配制 Apache 服务器

想要在 Apache 中使用 HTTPS ,首先要开启 SSL 模块( mod_ssl ),用户可以通过 apt-get 或 yum 安装。

安装好 ssl 模块后,修改 Apache 的设置,让原有支持 HTTP 的站点同时支持 https ,一个典型的 Apache 典型的 HTTP 配置是这样的:

/etc/httpd/conf/httpd.conf

<VirtualHost *:80>

DocumentRoot /var/www/html/codlr
ServerName www.codlr.com
</virtualhost> 在它下面添加下面内容:

<VirtualHost *:443>

SSLEngine on
SSLCertificateFile /etc/certs/server.crt
SSLCertificateKeyFile /etc/certs/server.key
DocumentRoot /var/www/html/codlr
ServerName www.codlr.com
<Directory /var/www/html/codlr>
    AllowOverride All
</Directory>
</virtualhost>

设置好后别忘了重启服务器。

WordPress 后台开启 HTTPS

如果想要后台控制面板支持 HTTPS ,可以修改 WP-config.php ,在文件末尾加入以下两行代码: define('FORCE_SSL_LOGIN', true);

define('FORCE_SSL_ADMIN', true);

修改 URL 跳转

首先不要忘记修改网站的地址,登录到 Wordpress 的后台:/wp-admin/options-general.php ,把 Wordpress 和 Site Address 换成 https 协议的。

考虑到有些被转载到别的网站上的博文还是 HTTP 的,所以要修改代码,让原有的 HTTP 链接自动跳转为 HTTPS 。可以通过修改.htaccess 文件来达到这个目的,.htaccess 文件在网站的根目录下,在文件的 RewriteBase 下面添加下面两行代码:

RewriteCond %{SERVER_PORT} !^443$

RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]

更新数据库

仅修改配置还是不够的,有些博客的文章中可能已经包含了 http 的链接,虽然已经修改了 Url 跳转,不过还是会被浏览器认为是不完全安全的网站,可以 SQL 进行字符串替换。

UPDATE wp_posts SET post_content = replace(post_content, 'http://codlr.com','https://codlr.com');

有的时候更换博客地址也会用到的哦。

2325 次点击
所在节点    WordPress
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/342678

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX