网络【HTTPS 协议】HTTP+SSL/TLS

HTTPS(HyperText Transfer Protocol over Secure Socket Layer)

HTTPS是基于HTTP的安全版,特点

  1. 保密性:通过SSL/TLS协议和加密算法,HTTPS保证了数据在传输过程中的保密性,防止数据被窃听。
  2. 完整性:HTTPS确保数据在传输过程中不被篡改,保持数据的完整性。
  3. 认证:通过数字证书,HTTPS能够验证通信双方的身份,防止身份伪造。
  4. 加密算法:HTTPS使用了混合加密算法,即结合了对称加密和非对称加密的优势。。
  5. 握手过程:在数据传输开始前,HTTPS会进行一个SSL/TLS握手过程,以确保通信双方协商一致的加密参数和密钥。
  6. 性能影响:虽然HTTPS提供了更高的安全性,但它也可能会对性能产生一定影响,比如增加数据传输的开销。然而,随着技术的进步,这种影响正在逐渐减小。

        HTTPS是一个重要的网络安全措施,它通过加密身份验证机制来保护数据的安全,防止数据泄露和中间人攻击。随着技术的发展和安全需求的增加,HTTPS已经成为互联网通信的标准做法。

加密算法:

  1. 对称性加密:对称加密的过程涉及使用相同的密钥进行数据的加密和解密;
  2. 非对称性加密:非对称加密的过程涉及使用一对密钥,即公钥和私钥,其中公钥用于加密数据私钥用于解密数据
  3. 哈希算法:将任意长度的信息转换为较短的固定长度的值,通常其长度要比信息小得多。它将任意长度的输入数据映射为固定长度输出的数学计算机程序,具有不可逆性唯一性高效性等特点。如:/etc/shadow文件中的用户密码。
  4. 数字签名:数字签名是一种电子签名技术,它利用非对称加密数字摘要技术来验证信息的真实性和完整性。

HTTPS 协议

        HTTP 协议(Hyper Text Transfer Protocol,超文本传输协议):是客户端浏览器或其他程序与Web服务器之间的应用层通信协议 。

        HTTPS 协议(HyperText Transfer Protocol over Secure Socket Layer):可以理解为HTTP+SSL/TLS, 即 HTTP 下加入 SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL,用于安全的 HTTP 数据传输。

        SSL/TLS : SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层为数据通讯进行加密提供安全支持。

SSL协议可分为两层:

  • SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证协商加密算法交换加密密钥等。相当于连接;
  • SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。 相当于通信 ;

SSL协议的工作原理是:

  • 传输层数据进行加密,以保护所有应用层协议的数据传输安全
  • 使用公开密钥和私有密钥两种加密方法,其中公钥用于加密数据,私钥用于解密数据。
  • 在应用层协议通信之前完成加密算法、通信密钥的协商以及服务器认证工作,之后应用层协议所传送的数据都会被加密。

SSL协议提供的服务主要有:

  • 身份认证和数据加密。保证数据完整性
  • 认证用户和服务器,确保数据发送到正确的客户机和服务器;
  • 加密数据以防止数据中途被窃取后,数据泄露和篡改;
  • 维护数据的完整性,确保数据在传输过程中不被改变。

HTTPS 原理

        HTTP请求过程中,客户端与服务器之间没有任何身份确认的过程,数据全部明文传输,“裸奔”在互联网上,所以很容易遭到黑客的攻击;

Https访问流程:

1.客户端想服务器发起HTTPS的请求,连接到服务器的443端口

2.服务器将非对称加密的公钥传递给客户端,以证书的形式回传到客户端

3..客户端接受到该公钥进行验证,如果有问题,则HTTPS请求无法继续;如果没有问题,则上述公钥是合格的。(第一次HTTP请求)客户端这个时候随机生成一个私钥,成为client key,客户端密钥,用于对称加密数据的。使用前面的公钥对client key进行非对称加密;

4.进行二次HTTP请求,将加密之后的client key传递给服务器;

5.服务器使用私钥进行解密,得到client key,使用client key对数据进行对称加密

6.将对称加密的数据传递给客户端,客户端使用对称解密,得到服务器发送的数据,完成第二次HTTP请求。

HTTPS相比HTTP的优势:

        相比HTTP,HTTPS 传输更加安全, 所有信息都是加密传播,黑客无法窃听。具有校验机制,一旦被篡改,通信双方会立刻发现。 配备身份证书,防止身份被冒充。

HTTPS 缺点:

  1. SSL 证书费用很高,以及其在服务器上的部署、更新维护非常繁琐(续费麻烦)
  2. HTTPS 降低用户访问速度(多次握手)
  3. 网站改用HTTPS 以后,由HTTP 跳转到 HTTPS 的方式增加了用户访问耗时(多数网站采用302跳转)
  4. HTTPS 涉及到的安全算法会消耗 CPU 资源,需要增加大量机器(https访问过程需要加解密)

https证书申请流程

申请地址:Certbot

环境准备:

  • 一台centos 7 LInux操作系统主机,并且能够正常上网;
  • 真实域名。

确保服务器上安装了 Nginx,并启动 nginx;

# 安装epel源
yum install -y epel-release
yum makecache fast
# 下载snapd
yum install -y snapd nginx
# 设置开机启动
systemctl enable --now snapd
# 设置 软连接
ln -s /var/lib/snapd/snap /snap
# 验证
snap --help

# 安装Certbot软件包,并使用了--classic标志(经典模式):等一会
snap install --classic certbot
# 建立软连接
ln -s /snap/bin/certbot /usr/bin/certbot
# 使用Certbot工具获取SSL/TLS证书
certbot certonly --manual --preferred-challenges dns -d *.kunkun666.cn

certbot: 是Certbot的命令行工具,用于管理SSL/TLS证书。

certonly: 表示只获取证书而不配置自动更新和续订。

--manual: 指定手动验证模式,即通过手动创建验证文件来证明域名所有权。

--preferred-challenges dns: 指定首选的验证方式为DNS(DNS challenge),即通过在DNS记录中添加特定的TXT记录来证明域名所有权。

-d *.tanke.love: 指定要获取证书的域名,这里包括tanke.love和以*.tanke.love开头的所有子域名。

综上所述,该命令的作用是使用Certbot工具,通过手动验证模式和DNS挑战方式,为kunkun666.cn和以*.kunkun666.cn 开头的所有子域名获取SSL/TLS证书。

打开阿里云,添加记录:

然后,在终端按下回车键:

# 如果出现上述报错则重新生成证书:
certbot certonly --manual --preferred-challenges dns -d tanke.love,*.tanke.love -v

测试:

# 启动nginx
systemctl  enable --now nginx
# 修改nginx配置文件
vim /etc/nginx/conf.d/default.conf 
#
server {
    listen       80;
    server_name  test.kunkun666.cn;
    location / {
      rewrite ^(.*)$  https://test.kunkun666.cn$1 permanent;
    }
}

server {
    listen     443 ssl;
    server_name test.kunkun666.cn;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_certificate     /etc/letsencrypt/live/kunkun666.cn/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/kunkun666.cn/privkey.pem;
    ssl_ciphers         HIGH:!aNULL:!MD5;

    location / {
        root   /nginx;
        index  index.html index.htm;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /nginx;
    }
}
#
mkdir /nginx
echo "This is test" > /nginx/index.html
nginx -t
systemctl restart nginx
test.kunkun666.cn

可以看到连接是安全的

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值