当前位置: 首页 > news >正文

小结:PKI(Public Key Infrastructure,公钥基础设施)

PKI(Public Key Infrastructure,公钥基础设施)

是一套为网络通信提供安全性的体系结构,其核心目标是实现身份认证、数据加密、完整性校验和防抵赖等安全功能。下面是对PKI架构的系统性总结:


🔐 一、PKI架构的核心组成

组件说明
CA(Certificate Authority)证书颁发机构负责签发、撤销和管理数字证书,是PKI体系的信任核心。
RA(Registration Authority)注册机构负责验证申请者的身份,辅助CA完成证书的签发。
证书持有者(Entity/Subscriber)使用数字证书进行加密通信的用户、设备或服务器。
证书库(Certificate Repository)存储并提供数字证书查询服务,如LDAP服务器或HTTP服务。
CRL(Certificate Revocation List)证书吊销列表用于列出已被吊销但尚未过期的证书。
OCSP(Online Certificate Status Protocol)在线证书状态协议一种实时查询证书状态的协议,替代传统CRL机制。
密钥对(Key Pair)包括私钥(保密)和公钥(可公开),用于加密/解密和签名/验签。

🧭 二、PKI运行流程(简化)

  1. 密钥生成:用户生成一对公钥和私钥。
  2. 证书申请:用户将公钥及其身份信息发送给RA/CA。
  3. 身份验证:RA验证身份,并将信息转发给CA。
  4. 证书签发:CA签发包含用户信息和公钥的数字证书。
  5. 证书使用:用户将证书用于加密通信或签名验证。
  6. 证书验证:接收方通过CA的根证书验证证书合法性,并可用OCSP/CRL查询是否吊销。
  7. 证书吊销:证书若被盗或不再使用,可通过CRL或OCSP机制吊销。

🏛️ 三、PKI信任模型

模型类型描述
单层CA所有证书由一个CA颁发,结构简单但安全性较低。
层级CA(多级CA)包括一个根CA和多个下级CA(中间CA),安全性高,常用于企业或国家级PKI体系。
网状模型各CA之间互信(如PGP Web of Trust),灵活但管理复杂。

🛡️ 四、PKI的典型应用场景

  • HTTPS/SSL 加密通信
  • 数字签名(邮件、PDF、软件)
  • VPN 和 Wi-Fi 身份认证
  • 智能卡、门禁系统
  • 电子政务和司法系统
  • 企业内部身份与权限管理

⚠️ 五、PKI面临的挑战

  • 私钥保护(如硬件加密模块 HSM 的使用)
  • 证书吊销机制效率(CRL更新慢,OCSP可能被中间人攻击)
  • CA被攻破的信任危机(如 DigiNotar 事件)
  • 用户对证书验证的忽视(浏览器警告被忽略)

数字指纹(Message Digest)

数字签名(Digital Signature)

虽然经常一起使用,但它们是不同的概念,承担不同的作用。下面是它们的区别和联系的详细说明:


🧾 一、基本定义

项目数字指纹(摘要)数字签名
定义对消息进行哈希运算得到的唯一“摘要值”用发送者私钥对数字指纹加密后的加密结果
用途检测消息是否被篡改(完整性校验)验证消息的来源和是否被篡改(身份 + 完整性)
生成方式使用**哈希算法(如 SHA-256)**处理消息内容用私钥对摘要进行加密(如 RSA/ECC 签名)
是否加密❌ 不加密,只是摘要✅ 是用私钥加密后的摘要
是否可验证身份❌ 无法验证身份✅ 可验证签名者身份

🔐 二、关系与流程图

数字签名的过程 必须先生成数字指纹,然后对其签名:

原文 ---> 哈希算法(SHA-256 等) ---> 数字指纹(摘要)
数字指纹 + 私钥加密 -----------> 数字签名

所以可以理解为:

数字签名 = 私钥加密的数字指纹


🧪 三、比喻帮助理解

  • 数字指纹 = 身份证号码:代表内容本身,但不能证明是谁发的。
  • 数字签名 = 手写签名 + 身份证复印件:不仅能说明内容没改,还能说明是谁发的。

✅ 四、举例说明(实际通信流程)

以发送消息为例:

  1. 甲方准备明文
  2. 对明文做哈希 → 得到数字指纹
  3. 用私钥对指纹加密 → 得到数字签名
  4. 把原文 + 签名一起发给乙方

乙方收到后:

  1. 对原文再做一次哈希 → 得到本地数字指纹
  2. 用甲方公钥解密签名 → 得到甲方生成的数字指纹
  3. 比较两者是否一致

数字指纹是用来快速校验内容完整性的,而数字签名是在此基础上加上身份认证的一种机制。

网络通信中常见的加密算法分类:

在网络通信中主要用于数据包转发、VLAN隔离、安全控制等功能。虽然它本身不总是直接执行高级加密操作,但在启用了管理加密、安全接入或传输保护的场景中,会使用到多种加密算法。


🔐 一、用于管理加密的算法(如 SSH、HTTPS 登录)

📌 使用场景:通过 SSH 或 HTTPS 安全访问交换机的管理界面

类型常见算法说明
对称加密AES、3DES用于会话期间的数据加密
非对称加密RSA、ECDSA用于密钥交换、身份认证
哈希算法SHA-1、SHA-2(SHA-256)用于数据完整性校验(如数字签名)

📶 二、用于数据链路加密的算法(如 MACsec)

📌 使用场景:链路层加密(L2 层安全),例如企业级网络中启用 MACsec 加密

类型常见算法说明
对称加密AES-GCM(128 或 256)认证加密(Authenticated Encryption)
密钥协商协议MKA(MACsec Key Agreement,基于 IEEE 802.1X)配合 802.1AE 协议分发加密密钥

🌐 三、用于 VPN 的加密算法(如 IPsec over VLAN)

📌 使用场景:部分高端交换机具备 VPN 支持,或用于三层交换支持加密路由

类型常见算法说明
对称加密AES、3DES、ChaCha20用于加密传输数据
非对称加密RSA、DH(Diffie-Hellman)、ECDH用于密钥交换和身份认证
哈希算法SHA-1、SHA-256、SHA-3完整性校验
封装协议ESP(Encapsulating Security Payload)IPsec 中的加密协议

👮 四、用于接入认证(如 802.1X)

📌 使用场景:终端接入时使用 EAP 协议进行身份验证,加密传输凭证

类型常见算法用途
非对称加密RSA、ECDSA用于服务器身份验证
对称加密/协商TLS(含 AES)EAP-TLS 中保护认证过程
哈希算法HMAC-SHA256用于消息认证码(MAC)

🛡️ HTTPS 的加密机制(TLS 层)

HTTPS = HTTP + TLS,加密的是​整个 HTTP 请求报文​:

✔ 在加密的内容包括:

  • 请求路径(但不包括域名)
  • 请求参数(如 POST 的 body、GET 的 query)
  • Cookie、Header
  • 响应内容

❌ 不加密的内容:

  • 域名(SNI 会暴露)
  • IP 地址(因为需要建立连接)

https://example.com/api/user?id=123

实际流程是:

  1. 浏览器用 TLS 建立加密通道(握手,协商密钥)
  2. 然后 HTTP 请求被加密成 TLS 包发送
  3. 网络中传输的是加密数据(肉眼或抓包工具如 Wireshark 看到的是乱码)
  4. 浏览器收到服务器响应后,用协商好的密钥解密数据
  5. 浏览器开发工具展示的是“解密后”的内容(看起来是明文)

🧩 其他说明:

  • 商业交换机(如 Cisco、Huawei、Juniper)通常支持配置密码加密(如 service password-encryption)或启用 SSHv2。
  • 有些交换机还支持 TPM(可信平台模块)或 FIPS 模式,要求加密算法符合安全标准。

✅ 总结表

加密用途常用算法
管理安全(SSH/HTTPS)AES、RSA、SHA-2
数据链路加密(MACsec)AES-GCM、802.1AE、MKA
VPN加密(IPsec)AES、3DES、RSA、DH、SHA-2
接入认证(802.1X)TLS、EAP、HMAC-SHA、RSA

在实际项目或生产环境中,配置证书(尤其是 HTTPS 证书)主要涉及服务器安装证书、绑定端口、配置中间证书链等步骤。下面我分场景给你列出配置方法。


在 HTTPS 中,CA(Certificate Authority,​证书颁发机构​)签发的数字证书起到了身份认证 + 公钥可信传递的关键作用。下面我们来详细说明 CA 证书的作用、类型、使用场景等内容:


CA 证书的核心作用

作用说明
身份认证确保服务器/客户端确实是其声称的实体,防止中间人攻击
传递公钥的信任链公钥以数字证书形式传递,浏览器通过 CA 签名验证其合法性
构建信任体系(PKI)PKI(公钥基础设施)体系的基础,确保证书可验证和撤销
数据加密起点TLS 握手中用证书内的公钥加密会话密钥

使用场景举例

场景所需证书类型
用户访问 HTTPS 网站根证书(本地)+ 中间 + 服务器证书
企业内网系统双向认证客户端证书 + 服务器证书
VPN、S/MIME 邮件加密、代码签名客户端/签名证书 + 中间 CA
HTTPS 抓包工具(如 Charles)本地自建根证书(作为中间人)

在这里插入图片描述

证书类型用途签发者安装位置
根证书信任起点自签名浏览器/系统
中间证书代理签发根证书随网站传输
服务器证书网站身份认证中间证书Web 服务器
客户端证书用户身份认证中间/根证书浏览器/系统

Web 服务器配置证书方法

1. Nginx 中配置证书

🔧 配置示例:

server {listen 443 ssl;server_name www.example.com;ssl_certificate     /etc/nginx/ssl/fullchain.pem;   # 服务器证书 + 中间证书链ssl_certificate_key /etc/nginx/ssl/private.key;     # 私钥文件ssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers HIGH:!aNULL:!MD5;location / {proxy_pass http://localhost:3000;}
}
  • fullchain.pem:包含服务器证书 + 中间 CA 链
  • private.key:仅服务器可见的私钥

2. Apache 配置 HTTPS

<VirtualHost *:443>ServerName www.example.comSSLEngine onSSLCertificateFile      /etc/httpd/ssl/server.crtSSLCertificateKeyFile   /etc/httpd/ssl/private.keySSLCertificateChainFile /etc/httpd/ssl/chain.pem
</VirtualHost>

3. Java/Spring Boot 配置证书(使用 .p12

🧩 准备:

使用 OpenSSL 将 .crt + .key 转成 .p12 格式:

openssl pkcs12 -export \-in server.crt \-inkey private.key \-certfile chain.pem \-out server.p12

🔧 application.yml 配置示例:

server:port: 443ssl:key-store: classpath:server.p12key-store-password: changeitkey-store-type: PKCS12

4. Node.js(HTTPS 模块)配置证书

const https = require('https');
const fs = require('fs');const options = {cert: fs.readFileSync('fullchain.pem'),key: fs.readFileSync('private.key')
};https.createServer(options, (req, res) => {res.writeHead(200);res.end("Hello HTTPS!");
}).listen(443);

客户端证书验证配置(双向认证)

Nginx 启用客户端证书验证:

ssl_verify_client on;
ssl_client_certificate /etc/nginx/ssl/ca.pem;  # 客户端证书要由这个 CA 签发

🧪 测试和验证工具

  • 本地验证证书链完整性

    openssl verify -CAfile fullchain.pem server.crt
    
  • 在线验证证书部署是否正确

    • SSL Labs
    • SSL Checker

证书文件结构说明

文件名内容说明
server.crt你的服务器证书(含公钥)
private.key你的服务器私钥(务必保密)
chain.pem中间证书链
fullchain.pem服务器证书 + 中间证书拼接
.p12/.jksJava/Spring 使用的密钥库

相关文章:

  • CSdiy java 06
  • 西门子笔记四:Uart模块
  • 异步机制与 CPU 的关系解析
  • C++/SDL 进阶游戏开发 —— 双人塔防(代号:村庄保卫战 15)
  • 当 AI 成为 “数字新物种”:人类职业的重构与进化
  • 角度(degrees)和弧度(radians)转换关系
  • Glide 如何加载远程 Base64 图片
  • 链表反转操作经典问题详解
  • 关于 const a 定义的数据 与 其渲染 的问题。即通过const定义的常量,会不会导致渲染不及时。
  • 原语的使用
  • 归并排序排序总结
  • 创建RAID1并扩容RAID
  • 使用C# ASP.NET创建一个可以由服务端推送信息至客户端的WEB应用(1)
  • Redis分布式锁使用以及对接支付宝,paypal,strip跨境支付
  • Qwen3-8B安装与体验-速度很快!
  • 国内无法访问GitHub官网的问题解决
  • 碰到的 MRCPv2 串线以及解决思路
  • C语言Makefile编写与使用指南
  • centos7 安装python3
  • IIC小记
  • 李铁案二审今日宣判,押送警车已进入法院
  • 陈文清:推进扫黑除恶常态化走深走实,有力回应人民群众对安居乐业的新期待
  • 美国通过《删除法案》:打击未经同意发布他人私密图像,包括“深度伪造”
  • 美乌总统梵蒂冈会谈,外交部:望有关各方继续通过对话谈判解决危机
  • 央行副行长:增强外汇市场韧性,坚决对市场顺周期行为进行纠偏
  • 全过程人民民主研究基地揭牌,为推动我国民主政治建设贡献上海智慧