已开启全站 HTTPS
前言
每次用 Chrome 访问 Blog 时都会出现这种东西,感觉很没有安全感。
显然,开启 HTTPS 访问的站点不会出现这种情况,而且有一把绿色的小锁(看上去很安全的样子),比如洛谷。
于是我也决定要让我的 Blog 开启 HTTPS。
准备
首先你需要有一个域名(这不废话吗),其次你需要一个 SSL 证书,可以在域名控制台找到这个选项。
然后点开它,当然没钱的我只能申请一个免费证书。
慢慢等它审核(一般没有敏感字的话几分钟就好)
看到这个后,点下载就可以,现在你就拥有了一个 SSL 证书。
配置
本 Blog 使用的是 Nginx,根据它的官方教程,先在 Nginx 安装目录下创建 cert 目录,并把下载得到的压缩包内容全部放到这个文件夹里。
完成以后修改 Nginx 的配置文件。sudo vi /usr/local/nginx/conf/nginx.conf
SSL 模块错误解决
然而按照提示修改以后,出现了这样的提示nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:100
通过在网上查找资料得知,这是因为我没有安装 SSL 模块所导致。
那么应该如何解决这个问题呢?需要重新从安装文件搞起。
定位到安装包文件夹,执行以下命令./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
然而又出现了错误 ./configure: error: SSL modules require the OpenSSL library.
,
所以还需要安装 libssl-dev
,安装后就可以愉快地 make
了。
先备份一波 Nginx sudo cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
。
覆盖原有安装文件 cp ./objs/nginx /usr/local/nginx/sbin/
重新启动 Nginx sudo /usr/local/nginx/sbin/nginx -s reload
通过 HTTPS 访问站点
403 Forbidden?
可以考虑把 HTTP 的配置文件 server 部分一股脑儿地添加到 HTTPS server 部分,只是把 80 端口改成 443 端口。
提示不安全?
然而...
一切都是因为我通过 IP 地址访问了 Blog。
把 WordPress 站点地址和 WordPress 地址改成 https://域名/
就可以了。
提示这个?
这只是因为你引用了一些不安全的图片啊、样式啊什么所导致的,把它们的链接修改一下就好。
当然还有一个好用的插件。SSL 不安全内容修复器,它的名字也很直白,能够帮助你修复一些不安全的引用。
依然通过 HTTP 访问?
你需要一个插件。Really Simple SSL,它可以强制开启全站 HTTPS。
最后
大功告成!Yeah!
Update at 2018-07-11
HTTP/2
据说 HTTP/2 能够极大地提高网页访问速度,于是又给 Nginx 添加了 HTTP/2 模块。
编译参数 --with-http_v2_module
,记得也要加上原来的参数。
还是原来的操作,直接覆盖 Nginx 二进制文件。
修改配置文件,在监听端口中的 443 ssl
后面加上 http2
,保存然后重新启动 Nginx 服务就好了。
现在加载网页能够在 Chrome 浏览器中看到 HTTP/2 信息了。(在 Chrome 自带的工具内 chrome://net-internals/ )