mirror of
https://github.com/Dichgrem/Blog.git
synced 2025-08-01 09:19:32 -04:00
update:SSL
This commit is contained in:
90
content/Network-ssl.md
Normal file
90
content/Network-ssl.md
Normal file
@ -0,0 +1,90 @@
|
||||
+++
|
||||
title = "Network的艺术:SSL/TLS证书"
|
||||
date = 2024-02-15
|
||||
|
||||
[taxonomies]
|
||||
tags = ["网络艺术"]
|
||||
+++
|
||||
|
||||
前言 什么是SSL/TLS证书?它有什么作用?如何部署?
|
||||
<!-- more -->
|
||||
|
||||
## 什么是SSL/TLS证书
|
||||
|
||||
SSL 的全称是 ``Secure Sockets Layer``(安全套接字层),而 TLS 的全称是 ``Transport Layer Security``(传输层安全协议)。最初由 Netscape 开发的 SSL 协议用于保护网络通信,但由于其存在的安全漏洞,后来被更新、更安全的 TLS 协议所取代。
|
||||
|
||||
如今,当我们谈论“SSL 证书”时,实际上指的是支持 TLS 协议的数字证书,``两者在功能上没有本质区别,只是在命名上沿用了历史传统``。该证书是由受信任的数字证书颁发机构 CA,在验证服务器身份后颁发,且具有服务器身份验证和数据传输加密功能。简单来说就是``HTTP+SSL/TLS证书=HTTPS.``
|
||||
|
||||
## SSL证书是如何工作的
|
||||
|
||||
- 当我们点击一个超链接(HTTP),浏览器帮我们跳转到新标签页;
|
||||
- 通过DNS(Domain name system)查询找到该域名(地址栏中的如www.xxx.com之类的字符)对应的IP地址,可能是某个CDN的地址;
|
||||
- 服务器上已经配置好certificate.crt(公钥)和private.key(私钥);
|
||||
- CDN随后与真正的服务器建立连接,服务器上的反向代理(可能是nginx或者caddy)检测连接,并用配置好的证书将连接升级为HTTPS;
|
||||
- HTTPS握手并将内容显示在浏览器上。
|
||||
|
||||
## SSL/TLS证书的握手过程
|
||||
|
||||
- 客户端发送"ClientHello"消息,包含支持的加密算法和TLS版本;
|
||||
- 服务器回应"ServerHello"消息,选择加密算法并发送SSL/TLS证书;
|
||||
- 客户端验证证书的有效性(通过内置的CA根证书);
|
||||
- 客户端使用服务器公钥加密一个"预主密钥"并发送给服务器;
|
||||
- 双方根据预主密钥生成会话密钥;
|
||||
- 使用会话密钥进行加密通信;
|
||||
- 加密通信:握手完成后,所有数据传输都使用协商好的对称密钥加密。
|
||||
|
||||
> 使用公钥加密的数据只能用对应的私钥解密,使用私钥加密(签名)的数据可以用对应的公钥验证。
|
||||
|
||||
## CA证书
|
||||
|
||||
可以看到,验证证书的有效性需要通过CA证书,由CA机构(如DigiCert
|
||||
Let's Encrypt)等颁布,CA证书的层级结构如下:
|
||||
|
||||
- 根CA证书:最高级别的证书,自签名,是整个信任链的起点.
|
||||
- 中间CA证书:由根CA签发,可以签发终端实体证书或其他中间CA证书.
|
||||
- 终端实体证书:由根CA或中间CA签发给网站、服务器等实体使用.
|
||||
|
||||
操作系统和浏览器``内置了受信任的根CA证书列表``,当验证网站证书时,系统会沿着证书链向上追溯至根CA;如果能找到一个受信任的根CA,且证书链上所有签名有效,则验证通过.这就是保护我们上网安全的``信任链``的基础。
|
||||
|
||||
当我们访问网页时,往往会看到左上角的``锁``图标,里面是``Google Trust Services``或者``DigiCert Inc``等等,代表证书的颁发来源。如果锁提示不安全,可能是证书过期或者找不到CA证书,即有可能是自签名证书。``什么是自签名证书?``
|
||||
|
||||
## 证书颁发
|
||||
|
||||
我们先来看证书颁发的流程。
|
||||
- 证书申请:网站所有者向证书颁发机构(CA)申请SSL/TLS证书,提供域名和组织信息。
|
||||
- 身份验证:CA验证申请者的身份和域名所有权。验证方式包括域名验证(DV)、组织验证(OV)或扩展验证(EV)。
|
||||
- 证书签发:验证通过后,CA使用其私钥为申请者签发数字证书,包含公钥、域名信息、颁发者信息和有效期等。
|
||||
- 安装部署:网站管理员将证书安装到Web服务器上。
|
||||
|
||||
可以看到过程有点麻烦,个人建站的话往往使用自签名证书,即``ssh-keygen``生成的公钥和私钥,由于没有CA所以会显示不安全。
|
||||
|
||||
## DV/OV/EV SSL证书的区别
|
||||
|
||||
以下是三种主要SSL证书验证类型的对比:
|
||||
|
||||
| 特性 | 域名型SSL (DV SSL) | 企业型SSL (OV SSL) | 增强型SSL (EV SSL) |
|
||||
|------|-------------------|-------------------|-------------------|
|
||||
| **验证级别** | 最低 | 中等 | 最高 |
|
||||
| **验证内容** | 仅验证域名所有权 | 验证域名所有权和组织信息 | 最严格的验证,包括法律、物理和运营存在的全面验证 |
|
||||
| **验证流程** | 自动化验证(邮件、DNS记录等) | 半自动验证 | 人工审核为主 |
|
||||
| **签发时间** | 几分钟到数小时 | 1-3个工作日 | 5-7个工作日 |
|
||||
| **浏览器显示** | 普通锁图标 | 普通锁图标 | 地址栏绿色显示(部分浏览器已取消) |
|
||||
| **适用场景** | 个人博客、信息网站 | 企业网站、电子商务 | 银行、金融机构、大型电商 |
|
||||
| **成本** | 低 | 中等 | 高 |
|
||||
| **信任度** | 基本 | 中等 | 最高 |
|
||||
| **证书信息** | 只包含域名信息 | 包含组织名称和域名 | 包含完整的组织详细信息 |
|
||||
| **安全加密强度** | 相同 | 相同 | 相同 |
|
||||
|
||||
## 证书类型
|
||||
|
||||
有时候可以购买如``*.xxx.com``的通配符证书,即一个证书通用与所有子域名。以及还有其他如多域名证书和上面提到的DV/OV/EV证书的类型。
|
||||
|
||||
| 证书类型 | 覆盖范围 | 安全级别 | 验证过程 | 适用场景 | 价格范围 |
|
||||
|---------|---------|---------|---------|---------|---------|
|
||||
| 单域名证书 | 仅一个特定域名 | 基本到高 | DV/OV/EV | 个人网站或小型企业 | 低到高 |
|
||||
| 通配符证书 | 主域名及其所有一级子域名 | 基本到中等 | DV/OV | 拥有多个子域名的网站 | 中等到高 |
|
||||
| 多域名证书(SAN) | 多个不同域名 | 基本到高 | DV/OV/EV | 管理多个不相关域名的企业 | 中等到高 |
|
||||
| 自签名证书 | 任意 | 低 | 无需验证 | 测试环境、内部网络 | 免费 |
|
||||
|
||||
---
|
||||
**Done.**
|
Reference in New Issue
Block a user