个人网站如何白嫖 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进行访问导致打不开网页的问题。
537 0
使用SSL证书,免费给个人网站开启HTTPS防护
|
数据建模 网络安全 安全
个人网站可以申请什么样的https证书
  https证书即SSL证书,网站安装SSL证书可将http协议升级为https加密协议,可保障网站数据信息安全。随着SSL证书技术不断的发展,SSL证书的作用不仅仅在于数据加密,还有利于seo关键词优化,帮助网站进行排名,这也是个人网站选择安装SSL证书的重要原因。
4500 0
|
7月前
|
安全 网络协议 Linux
Linux网络应用层协议展示:HTTP与HTTPS
此外,必须注意,从HTTP迁移到HTTPS是一项重要且必要的任务,因为这不仅关乎用户信息的安全,也有利于你的网站评级和粉丝的信心。在网络世界中,信息的安全就是一切,选择HTTPS,让您的网站更加安全,使您的用户满意,也使您感到满意。
210 18
|
7月前
|
网络安全 开发者
如何解决HTTPS协议在WordPress升级后对网站不兼容的问题
以上就是解决WordPress升级后HTTPS协议对网站的不兼容问题的方法。希望能把这个棘手的问题看成是学校的管理问题一样来应对,将复杂的技术问题变得更加有趣和形象,并寻觅出解决问题的方式。希望你的网站能在新的学期得到更好的发展!
210 19
|
7月前
|
JSON 安全 网络协议
HTTP/HTTPS协议(请求响应模型、状态码)
本文简要介绍了HTTP与HTTPS协议的基础知识。HTTP是一种无状态的超文本传输协议,基于TCP/IP,常用80端口,通过请求-响应模型实现客户端与服务器间的通信;HTTPS为HTTP的安全版本,基于SSL/TLS加密技术,使用443端口,确保数据传输的安全性。文中还详细描述了HTTP请求方法(如GET、POST)、请求与响应头字段、状态码分类及意义,并对比了两者在请求-响应模型中的安全性差异。
710 20
|
7月前
|
安全 网络协议 算法
HTTP/HTTPS与SOCKS5协议在隧道代理中的兼容性设计解析
本文系统探讨了构建企业级双协议隧道代理系统的挑战与实现。首先对比HTTP/HTTPS和SOCKS5协议特性,分析其在工作模型、连接管理和加密方式上的差异。接着提出兼容性架构设计,包括双协议接入层与统一隧道内核,通过协议识别模块和分层设计实现高效转换。关键技术部分深入解析协议转换引擎、连接管理策略及加密传输方案,并从性能优化、安全增强到典型应用场景全面展开。最后指出未来发展趋势将更高效、安全与智能。
263 1
|
监控 安全 搜索推荐
设置 HTTPS 协议以确保数据传输的安全性
设置 HTTPS 协议以确保数据传输的安全性
|
8月前
|
安全 网络安全 数据安全/隐私保护
HTTP 与 HTTPS 协议及 SSL 证书解析-http和https到底有什么区别?-优雅草卓伊凡
HTTP 与 HTTPS 协议及 SSL 证书解析-http和https到底有什么区别?-优雅草卓伊凡
445 3
|
10月前
|
网络协议 安全 网络安全
HTTP与HTTPS协议入门
HTTP协议是互联网的基石,HTTPS则是其安全版本。HTTP基于TCP/IP协议,属于应用层协议,不涉及数据包传输细节,主要规定客户端与服务器的通信格式,默认端口为80。
407 25
HTTP与HTTPS协议入门
|
12月前
|
网络协议 安全 网络安全
探索网络模型与协议:从OSI到HTTPs的原理解析
OSI七层网络模型和TCP/IP四层模型是理解和设计计算机网络的框架。OSI模型包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,而TCP/IP模型则简化为链路层、网络层、传输层和 HTTPS协议基于HTTP并通过TLS/SSL加密数据,确保安全传输。其连接过程涉及TCP三次握手、SSL证书验证、对称密钥交换等步骤,以保障通信的安全性和完整性。数字信封技术使用非对称加密和数字证书确保数据的机密性和身份认证。 浏览器通过Https访问网站的过程包括输入网址、DNS解析、建立TCP连接、发送HTTPS请求、接收响应、验证证书和解析网页内容等步骤,确保用户与服务器之间的安全通信。
703 3