自22年9月份开始筹备私人博客的搭建以来,历经半年多的摸索,我终于将博客基本搭建成型了。
但因为经验所限,开始部署选择使用的是http协议,HTTP 协议是以明文方式发送信息的,若黑客截取了 Web 浏览器和服务器之间的传输报文,就可以直接获得其中的信息,安全性难以得到保证。为了进一步提升博客的访问安全性,利用了半个月左右的时间完成了SSL证书的申请、部署,并将网站整体修改为了https协议。简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。
1、申请SSL证书
对于个人而言,没有商业性需求完全可以申请一个免费的SSL证书,我是通过腾讯云进行申请的,申请链接如下:
https://console.cloud.tencent.com/ssl/dsc/apply
点击进入后申请界面如下,根据指引完善信息后等待证书下发即可。
2、部署SSL证书
部署SSL证书的方式有两种:
1)通过腾讯云、阿里云等后台直接部署。
点击“部署”按钮后,设置好自己对应的域名、部署类型即可一键部署。
2)自行将SSL证书下载、安装到服务器中
安装证书的大致流程为:(1)下载证书;(2)解压证书并复制到服务器对应目录下;(3)修改中间件配置文件。下面分别以Nginx和宝塔面板为例:
Nginx的证书安装:
(1)下载证书
一般说来,下载的证书应该是一个ZIP压缩包文件,解压即可得到:.crt、.pem、.csr、.key四个文件。我们需要使用的是.crt和.key这两个文件。
(2)创建目录
在Nginx的安装目录下创建cert目录,并将.crt和.key这两个文件拷贝到“cert”目录下。
此处因为每个服务器的安装目录各有差异,所以需要自己确定Nginx安装路径。一般地,对于腾讯云提供的轻量应用服务器,Ngnix的安装路径(正在使用的)为:/www/server/panel/vhost/nginx,仅供参考。
(3)修改配置文件
修改Nginx的conf文件,如果是针对所有站点进行修改则修改nginx.conf,如果是针对单个站点,直接修改域名.conf即可:
server {
listen 443 ssl;
server_name admin.xxxx.xxx;
ssl_certificate ../cert/server.crt
ssl_certificate_key ../cert/server.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}
(4)重启Nginx
因为服务器的安装路径不同,请自行寻找对应的Nginx安装路径,还是以腾讯云服务器为例,命令如下:
[root@VM-8-12-centos sbin]# cd /www/server/nginx/sbin
[root@VM-8-12-centos sbin]#./nginx -s reload
宝塔面板中的证书安装:
首先,必须吐槽下宝塔面板的巨巨巨巨巨巨坑:
nginx: [emerg] no “ssl_certificate” is defined for the “listen …
这个报错,如果不在配置证书前预先更改配置文件就会出现,所以请各位无论如何首先对配置文件做个修改:
选择左侧选项卡的“网站”选项,然后点击右侧“设置”。
在弹出的对话框中选择左侧“配置文件”,然后增加标红处代码:
#SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
#error_page 404/404.html;
#HTTP_TO_HTTPS_START
然后点击保存即可。
然后开始配置证书,进入左侧选项卡“SSL”选项,左侧将.csr文件中的文本内容粘贴进来,右侧将.crt文件中的文本内容粘贴过来,点击保存即可:
3、配置Wordpress中的链接
一定要确保,将所有的http链接都修改为https,否则你将无法访问你的站点!
4、检查是否可以通过https协议访问你的站点
直接在浏览器窗口输入:https://+你的域名,查看是否能正常访问你的站点,如果不能,请检查上述过程配置是否有误,以及防火墙是否开放了443或其他SSL服务端口。
5、设置301重定向,确保你的站点只能通过https来进行访问
在通过上述过程配置以后,你的站点应该可以同时使用http和https来进行访问,为了保证实现全站https,需要对访问做重定向,修改你的网站配置文件,在server代码块中添加下述代码:
server {
rewrite ^(.*)$ https://$host$1 permanent;
if ($server_port = 80) {return 301 https://$server_name$request_uri;}
if ($scheme = http) {return 301 https://$server_name$request_uri;}
error_page 497 https://$server_name$request_uri;
}
至此,你的站点就已经实现了全站https访问。
还是要提一嘴,不同的服务器、中间件安装路径、部署方式等都会导致配置过程有所不同,此文章仅能为各位提供些许参考,如有谬误请各位批评指正~