个人网站如何白嫖 HTTPS

简介: 个人网站如何白嫖 HTTPS

总所周知,HTTP 协议主要用于客户端和服务端的通信,但它本身也有一定缺点

明文传输,内容可能被监听
不能验证通信方的身份,可能遭遇伪装
无法证明报文完整性,报文可能被篡改

从架构的角度来说 “没有什么是加一层不能解决的” (狗头),所以 HTTPS 也就应运而生了
HTTPS 是 HTTP 协议加 SSL(Secure Socket Layer,安全套接层)和 TLS(Transport Layer Security,安全层传输协议)协议的统称,从名称就可以看出,“两个 S” 相关的协议目的就是为了保证通信的安全性。通信方式也就变成了:HTTP → SSL / TLS → TCP / IP
那么 HTTPS 是如果保证安全性的呢,这里简单介绍一下

将对称加密的密钥用非对称加密的公钥进行加密,接收方在收到后,使用非对称加密的私钥进行解密得到对称加密的密钥,然后双方就可以通过对称加密的密钥进行沟通了
但是这种加密传输的方式,一样也可能遭受中间人攻击,为了解决这个问题,需要一个权威、安全、可靠的第三方来证明通信方的身份,这里就要用到机构颁发的 CA 证书
使用 CA 证书自带的 Hash 算法对证书内容 Hash 化得到一个摘要,再用 CA 证书的私钥加密,得到一个数字签名。当接收方收到证书后,使用相同的 Hash 算法生成消息摘要,再用公钥对数字签名解密,两者一对比,就知道有没有被别人篡改过了

所以这里可以看到配置 HTTPS 的关键在于 CA 证书,而提供这种证明服务的机构必然是收费的(不然怎么保持中立呢),而且收费一般还不低,但是只要努力找一下,也是有白嫖 CA 证书的机会的。
(顺便说一句,HTTPS 也不是绝对安全的,如果没有做到全站 HTTPS 的话,一样可能存在安全风险)
如何白嫖 HTTPS 证书
我使用的是 Letsencrypt ,一个免费好用的 HTTPS 证书服务商。毕竟阿里云一个证书续费 2000 多,一个个人网站续上几年都够换台 Macbook 了,对于个人网站来说真的没必要
我使用的阿里云的服务器,操作系统是 Alibaba Cloud Linux,本质也是对 CentOS 的封装(CentOS 2021 年 12 月 31 号就停止维护了),所以下面我简单介绍一下如何在 Alibaba Cloud Linux(CentOS)配置 HTTPS 证书
安装 Certbot 和 snap
Letsencrypt 官方提供一个 Certbot 工具,用于快速生成证书。dnf 是 CentOS 内置的 Shell 软件包管理器,先使用 dnf --version 命令确定 dnf 工具可用, 再增加 epel 源,并更新 dnf 仓库
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
dnf upgrade
复制代码
接下来使用 dnf 安装 snap(一个软件集合,类似 App Store)
dnf install snapd -y # 安装snap
systemctl enable --now snapd.socket # 设置开机自启
ln -s /var/lib/snapd/snap /snap # 设置 snap 软链接
复制代码
安装好 snap 后,更新 snap 快照、安装 Certbot 并设置软连接

更新快照

snap install core
snap refresh core

snap install --classic certbot # 安装 certbot
ln -s /snap/bin/certbot /usr/bin/certbot # 设置 certbot 软链接
复制代码
输入 certbot --version ,如果正确输出版本内容,说明 certbot 已经安装完成

配置 HTTPS 证书
接下来使用 certbot 配置 https 证书,首先可以检查一下服务器有没有打开 HTTPS 需要的 443 端口的防火墙,如果没有打开的话需要提前设置一下(我一开始配置的时候就因为没开 443 的防火墙,导致证书一直下载不下来)

检查 443 端口防火墙是否打开,返回的是 yes 的话说明是开启的

firewall-cmd --query-port=443/tcp

开启 443 端口的防火墙

firewall-cmd --add-port=3306/tcp --permanent
firewall-cmd --reload
复制代码
再输入 nginx -V 命令检查 nginx 是否有配置 SSL 参数,如果看到 --with-http_ssl_module 参数说明是配置好了,否则需要重新安装、编译添加 SSL 模块

进入源码包

cd /home/nginx-1.20.2/

操作 ssl 编译(prefix 是 nginx 目录前缀)

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module`

执行 make 命令(此时不要执行 make install,否则会覆盖)

make

备份原有 nginx 配置

cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak

停止 nginx

nginx -s stop

将编译好的 nginx 覆盖掉原有的 nginx

cd /home/nginx-1.20.2/
cp ./objs/nginx /usr/local/nginx/sbin/

启动 nginx

nginx

查看模块是否加载成功(大写的 V)

nginx -V
复制代码
配置好 SSL 模块的情况

设置好上面两个步骤之后,就可以执行 certbot —nginx 命令扫描 nginx 所有配置,会要求选择选择需要配置的域名,

输入电子邮箱,用于紧急续签和安全通知
是否同意服务条款,输入 y 同意
是否接受新闻邮件,输入 n 不同意
只要输入域名对应的序号即可,下图就是我的域名,如果有多个的话需要以逗号分隔即可

然后 certbot 会下载证书到 /etc/letsencrypt/live/[具体域名] 目录

证书下载好的同时,certbot 也会修改 nginx.conf 配置文件的内容,下面看一下 certbot 修改了哪些内容(带有 # managed by Certbot 的内容都是 certbot 增加的,无须手动再次修改)

监听的端口由原来的 80 端口变为 443 端口

listen 443 ssl; # managed by Certbot

导入 HTTPS 下载好的证书相关文件

ssl_certificate /etc/letsencrypt/live/www.wujieli.top/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/www.wujieli.top/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

在非 https 访问的情况下,使用 301 重定向至 https 目录

server {
if ($host = www.wujieli.top) {

return 301 https://$host$request_uri;

} # managed by Certbot
复制代码
最后可以使用 SSLChecker 网站检查一下 HTTPS 是否配置成功,如果全是绿色就代表大功告成了,这时候访问域名的时候就可以看到访问是安全的了

作者:WujieLi
链接:https://juejin.cn/post/7116883485087760397
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

目录
相关文章
|
网络协议 安全 应用服务中间件
使用SSL证书,免费给个人网站开启HTTPS防护
以.com结尾的python-office.com则存在:部分浏览器默认使用https进行访问导致打不开网页的问题。
319 0
使用SSL证书,免费给个人网站开启HTTPS防护
|
数据建模 网络安全 安全
个人网站可以申请什么样的https证书
  https证书即SSL证书,网站安装SSL证书可将http协议升级为https加密协议,可保障网站数据信息安全。随着SSL证书技术不断的发展,SSL证书的作用不仅仅在于数据加密,还有利于seo关键词优化,帮助网站进行排名,这也是个人网站选择安装SSL证书的重要原因。
4260 0
|
1月前
|
前端开发
webpack如何设置devServer启动项目为https协议
webpack如何设置devServer启动项目为https协议
368 0
|
20天前
|
安全 前端开发 中间件
中间件中HTTP/HTTPS 协议
【6月更文挑战第3天】
16 3
|
4天前
|
机器学习/深度学习 安全 数据安全/隐私保护
【计算机网络】深度学习HTTPS协议
【计算机网络】深度学习HTTPS协议
6 0
|
5天前
|
监控 小程序 前端开发
基础入门-抓包技术&HTTPS协议&WEB&封包监听&网卡模式&APP&小程序
基础入门-抓包技术&HTTPS协议&WEB&封包监听&网卡模式&APP&小程序
|
27天前
|
存储 安全 前端开发
HTTP 协议 与HTTPS
HTTP 协议 与HTTPS
|
1月前
|
存储 算法 安全
[计算机网络]---Https协议
[计算机网络]---Https协议
|
1月前
|
JSON 安全 网络协议
【Linux 网络】网络基础(二)(应用层协议:HTTP、HTTPS)-- 详解
【Linux 网络】网络基础(二)(应用层协议:HTTP、HTTPS)-- 详解
|
1月前
|
网络协议 安全 算法
HTTP协议与HTTPS协议
HTTP协议与HTTPS协议