给站点开启SSL/HTTPS
给网站地址栏上添加绿色小锁:我变绿了,也变安全了。
国庆旅游归来早,忙趁假期瞎折腾。
为什么要使用https
- SSL是应用层和运输层之间的加密协议,相比于http的明文传输来的更加安全。SSL能够有效降低中间人攻击的风险。比如使用
Fiddler
软件抓取https包的时候就需要先向浏览器添加自己的 CA 证书,因为没有证书信任的话就无法获得加密的内容。 - 全站https有利于提升网站在搜索引擎的收入率。在相同权重的情况下,搜索引擎会认为https站点的安全性更高而将网站排在前面。
- 站点使用https可以让自己的站点更加醒目(说白了就是想装13啦)。
申请SSL证书
有许多的免费SSL证书提供商。我用的是腾讯云的 DV SSL 证书。在这里可以申请 TrustAsia 提供的免费证书,为期1年。(顺便瞟了一眼 OV 和 EV 的企业付费证书,价格基本5k以上…)
申请需要验证你的主机和域名,会要求在指定位置放置验证文件或者给域名添加一条解析记录。如果你的域名也是从腾讯云买的,它会给你自动添加。验证的速度很快,大约10分钟就能审核通过。
如果你等了1小时还没通过就别等了,赶紧检查一下自己填的信息有没有吧,不要像我一样把域名打错了然后傻等了一天T T。
审核通过后会颁发的证书可以下载到本地。打开后里面有为各种http服务器使用的证书和密钥文件。我用的是Apache
,就把Apache文件夹下的3个文件上传到服务器上。
编辑Apache配置
编辑 etc/httpd.conf 文件,找到#LoadModule ssl_module modules/mod_ssl.so
和#Include conf/extra/httpd-ssl.conf
,去掉前面的#号注释,启用SSL模组。
编辑/lampp/etc/extra/httpd-ssl.conf
文件添加主机和证书:
1 2 3 4 5 6 |
DocumentRoot "/opt/lampp/htdocs/wordpress/" ServerName blog.beanbang.cn SSLEngine on SSLCertificateFile /opt/lampp/ssl-crt/2_blog.beanbang.cn.crt SSLCertificateKeyFile /opt/lampp/ssl-crt/3_blog.beanbang.cn.key SSLCertificateChainFile /opt/lampp/ssl-crt/1_root_bundle.crt |
完成后需要重启Apache服务器。
开启443端口
https协议使用的不是80端口而是443端口。如果有防火墙记得允许443端口的TCP
数据包通过。
WordPress设置
wordpress目录下的.htaccess
文件:
1 2 3 4 |
RewriteEngine On RewriteBase / RewriteCond %{HTTPS} !=on RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] |
这样使用http访问网页会被301
永久重定向至https页面。
加上固定链接消去/index.php
的部分就是这样:
1 2 3 4 5 6 7 8 9 |
RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] RewriteCond %{HTTPS} !=on RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] |
编辑wp-config.php
:
在 “if ( !defined(‘ABSPATH’) )” 前面,即”请不要再继续编辑”的提示前面添加。这样登陆博客时会强制使用https以保障安全。
1 2 3 4 5 6 |
$_SERVER['HTTPS'] = 'ON'; //网页下的链接全部由'http://'转换为'https://' define('FORCE_SSL_LOGIN', true); define('FORCE_SSL_ADMIN', true); //管理员登陆博客时跳转为https /* 好了!请不要再继续编辑。请保存本文件。使用愉快! */ if ( !defined('ABSPATH') ) |
更改域名信息、固定链接?
在有的教程里面还说需要像更换域名那样把全站的数据库中所有的“http”链接全部转换成“https”。其实不推荐也不需要这么做。上面的$_SERVER['HTTPS'] = 'ON';
设置过以后,wordpress是会自动识别转换的。
结束
现在,打开网站 https://blog.beanbang.cn 就可以正常访问了。即使是不加https前缀也能自动跳转到https。由于中间环节多了一个验证加密的步骤,网站打开的时间会比以往更长一些。
参考资料: