前言
我们在访问网站的时候,发现绝大多数站点的网址都是 https,少部分还是使用 http 协议。其实 http 其实是不安全的。
使用的场景:各种各样的用户中心、各种账号管理、QQ 空间 web 端、百度网盘 web 端、个人相册 web 端等等。
这些场景有大量的用户隐私,这些隐私要是直接在 http 上传播,就很容易被坏蛋所截获并读取。这个时候,毫无安全性可言。
而且,http 很容易就被植入广告,造成体验不佳。
所以,越来越多的网站使用 https,来保护网站的安全,保护用户隐私。
步骤
由于本人在搭建个人网站的时候,使用的云服务器是阿里云的,如果你是放到 gitee、github 等上的,可以直接忽略。因为这些代码仓库使用的协议全是 https。
本来是想使用阿里云的 SSL 证书,发现阿里云并没有免费的 SSL 证书。所以,我们使用 FreeSSL 来获取免费的证书。
好吧,其实我才发现阿里云有免费的,心肺停止 😅
FIFA 不多说,直接开始!
获取证书
1、进入 freeSSL 先进行注册和登录 ,需要绑定手机号真麻烦
2、回到这个界面,输入你的网站域名,选择你喜欢的品牌,不过只有两个免费的,我这里选择有效期为 1 年的亚洲诚信。亚洲诚信有两个域名可用,一个根域名,一个 www 的二级域名
最后,点击创建免费的 ssl 证书
3、点击创建完成之后,填写你的邮箱,CSR(证书请求文件) 生成选择浏览器生成就好了(其实就是不想下载客户端了)。
确认创建订单
创建完成,浏览器会弹出下载框,请务必把私钥给保存好。
DNS 验证
密钥生成成功,需要进行 DNS 验证。
注意:生成成功这个页面请勿关闭,否则需要重新来生成
1、进入阿里云的云解析 DNS
2、点击添加记录,选择记录类型为TXT,主机记录为_dnsauth,记录值就是生成的记录值,复制进去即可,最后点击确认。新的主机记录就添加上去了。
3、进入到 FreeSSL 的控制台,点击验证,验证成功后会自动打包,需要你下载证书文件和私钥文件。
上传证书文件和私钥文件到云服务器
这里使用的是 nginx 服务器
1、在 nginx 配置目录下创建名 ssh 的文件夹(我的nginx的配置路径在 /etc/nginx 目录下)
[root@izgtymdwetse3wz ~]# cd /etc/nginx/
[root@izgtymdwetse3wz nginx]# mkdir ssh
2、将证书文件和私钥文件复制到这个目录下
[root@izgtymdwetse3wz nginx]# ll -a ssl
total 16
drwxr-xr-x 2 root root 4096 Jan 2 11:16 .
drwxr-xr-x 3 root root 4096 Jan 2 15:33
-rw-r--r-- 1 root root 3771 Jan 2 11:16 full_chain.pem
-rw-r--r-- 1 root root 1728 Jan 2 11:16 private.key
3、编辑 nginx.conf 文件,更改监听端口为 443 ssl,添加证书路径 ssl_certificate 和私钥 ssl_certificate_key
server {
listen 443 ssl;
server_name www.bestguo.top;
ssl_certificate ssl/full_chain.pem;
ssl_certificate_key ssl/private.key;
location / {
...
}
}
重启 nginx
[root@izgtymdwetse3wz nginx]# nginx -s reload
效果
直接访问 https://www.bestguo.top ,证书已经生效,并且有一把锁的图标
这样,我们访问的页面的时候,服务器和用户之间的数据传输就不会直接暴露,不会被恶意篡改。
疑问
如何将 http 重定向 https
在 nginx.conf 下,添加以下的配置。
首先监听80端口,指定 server_name,通过 rewrite 重定向到 https 页面。
server {
listen 80;
server_name www.bestguo.top;
rewrite ^(.*)$ https://${server_name}$1 permanent;
}
请勿发布违反中国大陆地区法律的言论,请勿人身攻击、谩骂、侮辱和煽动式的语言。