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

https + 域名 + 客户端证书访问模式

项目使用金融云部署,对外暴露IP访问,因安全合规要求必须使用域名访问,但公司又不提供域名。故,改为 https + 域名 + 客户端证书双向认证 访问模式,大大提升安全性。

1. 密钥文件类型

.key.csr.cer(或 .crt)和 .srlSSL/TLS 证书管理中常见的文件类型。

1.1 .key 文件(私钥文件)

  • 是什么?
    • 这是一个私钥文件。它通常使用非对称加密算法(如 RSA、ECC)生成,包含一个绝对不能公开的密钥对中的私密部分。
    • 它可以是二进制的,但更常见的是 PEM 格式(文本格式,以 -----BEGIN PRIVATE KEY----- 开头,以 -----END PRIVATE KEY----- 结尾)。
  • 有什么作用?
    • 身份验证:服务器用它来向客户端证明自己的身份。在 SSL/TLS 握手过程中,服务器会用私钥对一段数据进行签名,客户端用对应的公钥(在证书里)验证签名,从而确信正在与持有正确私钥的服务器通信。
    • 加密:用于协商对称会话密钥。例如,在 RSA 密钥交换过程中,客户端会用证书中的公钥加密一个预主密钥并发送给服务器,只有持有私钥的服务器才能解密它。
    • 生成 CSR: 创建证书签名请求(.csr)时必须使用相应的私钥。

1.2 .csr 文件(证书签名请求文件)

  • 是什么?
    • 这是一个证书签名请求文件。它是由申请者生成的,包含了希望包含在证书中的信息(如域名、组织、所在地等),以及最重要的:对应私钥的公钥
    • 它也是通常使用 PEM 格式(以 -----BEGIN CERTIFICATE REQUEST----- 开头)。
  • 有什么作用?
    • 申请证书: 将它提交给证书颁发机构(CA),请求 CA 为其签发一个数字证书。
    • 信息载体: 包含了 CA 需要用来签发证书的所有信息。CSR 本身不包含私钥。
    • 验证来源: CA 会验证 CSR 中的信息(尤其是域名所有权和组织信息)是否真实有效。
  • 如何生成?
    • 使用 OpenSSL 等工具,通过已有的私钥(.key 文件)来生成。

1.3 .cer 或 .crt 文件(证书文件)

  • 是什么?
    • 这是数字证书文件。它是由证书颁发机构(CA)签发的,证明某个公钥属于某个特定的实体(如域名)。
    • 它是基于你的 .csr 文件签发的,并附有 CA 的数字签名,使其可信。
    • 常见格式有 PEM(文本格式,以 -----BEGIN CERTIFICATE----- 开头)和 DER(二进制格式)。扩展名 .cer.crt 通常可以互换使用,都指证书。
  • 有什么作用?
    • 公钥分发: 证书的核心内容之一就是服务器的公钥。客户端(如浏览器)会获取这个证书来拿到可信的公钥。
    • 身份证明: 证书包含了实体的身份信息(如域名),并由受信任的第三方(CA)背书。客户端通过验证证书的签名链,确信该证书是真实有效的。
    • 建立安全连接: 在 HTTPS 等场景中,服务器将自己的证书发送给客户端,客户端验证通过后,便使用证书中的公钥来加密通信,与服务器建立安全的 TLS 连接。
  • .csr 的关系:
    • .csr 是申请书(包含公钥和身份信息),.cer/.crt 是 CA 批准后颁发的正式身份证(包含公钥、身份信息和CA的签名)。

1.4 .srl 文件(序列号文件)

  • 是什么?
    • 这是一个序列号文件。它是由 CA(或自签名证书时的自己)生成和维护的一个简单的文本文件,里面包含一个十六进制的序列号。
  • 有什么作用?
    • 跟踪序列号: CA 为每个签发的证书分配一个唯一的序列号。每次签发新证书后,CA 会更新这个文件中的序列号,以确保下一个证书的序列号是唯一的。
    • 主要用于自签名CA: 当你自己扮演 CA,使用 OpenSSL 为多个服务器或客户端签发证书时,这个文件非常重要。它可以避免为不同的证书签发相同的序列号。
    • 首次生成证书时,OpenSSL 可能会创建一个包含初始序列号(如 00)的 .srl 文件。之后签发证书时会自动递增并使用它。

1.5 工作流程

1.5.1 CA颁发

在这里插入图片描述

生成
使用私钥创建
发送给
验证并签发
返回给
生成并维护
确保唯一性
泄露后果
申请者
密钥对 (.key)
证书签名请求 (.csr)
证书颁发机构 (CA)
数字证书 (.cer/.crt)
CA
序列号文件 (.srl)
⚠️ 安全警告
私钥必须严格保密
身份冒充、中间人攻击
  • 服务端:生成私钥(.key)→ 使用私钥生成证书签名请求(.csr)→ 将 .csr 文件提交给 CA → CA验证和签发,生成数字证书(.cer/.crt)→ 将私钥(.key)和 数字证书(.cer/.crt)配置在服务器(如 Nginx, Apache)上。
  • 客户端:当客户端(浏览器)访问,服务器下发证书,客户端验证安装证书。

1.5.2 自签名颁发

自签名签发相当于你自己扮演一个证书颁发机构(CA),为自己的服务器或客户端签发证书。一般应用场景:

  • 内部网络:公司内部服务器、开发测试环境、物联网设备。
  • 开发测试:在本地开发HTTPS应用。
  • 学习目的:理解PKI的工作原理。

⚠️重要警告⚠️:自签名CA颁发的证书在互联网上不会被公众信任的浏览器和操作系统默认信任。除非用户手动安装并信任你的根CA证书,否则会看到安全警告。

整个流程的核心是两级证书结构

  1. 生成根CA:创建一个根证书和私钥,这是所有信任的起点
  2. 用根CA签发服务器证书:使用根CA的私钥为你的服务器签发最终使用的证书。

大致流程图:

生成根CA密钥
ca.key
生成根CA证书
ca.crt
生成服务器密钥
server.key
创建服务器CSR
server.csr
用根CA签发服务器证书
server.crt
客户端
安装并信任ca.crt
访问服务器时验证server.crt
成功建立安全连接

https://blog.csdn.net/qq153471503/article/details/109524764

http://www.dtcms.com/a/367228.html

相关文章:

  • Python中将方法转为属性式访问
  • Flutter之riverpod状态管理详解
  • 【计算机网络(自顶向下方法 第7版)】第一章 计算机网络概述
  • 从零开始的python学习——元组
  • 晨控CK-GW08S与汇川H5U系列PLC配置Ethernet/IP通讯连接手册
  • 别再跟风通用大模型了!企业自建专属 AI 大模型的「避坑指南 + 落地干货」
  • GitHub每日最火火火项目(9.4)
  • Linux命令和使用
  • 【数学建模学习笔记】机器学习回归:决策树回归
  • Qt---状态机框架QState
  • Java ForkJoin
  • 办公任务分发项目 laravel vue mysql 第一章:核心功能构建 API
  • Dify 低代码平台技术详解与实践
  • 实验室智能化管理信息系统如何重塑实验室运作模式?
  • Linux系统shell脚本(三)
  • 解密注意力计算的并行机制:从多头并张量操作到CUDA内核优化
  • 【Luogu_P5839】 [USACO19DEC] Moortal Cowmbat G【动态规划】
  • C语言(长期更新)第14讲:指针详解(四)
  • 第六章 Cesium 实现简易河流效果
  • FastDDS:第三节(3.2小节)
  • 规则引擎开发现在已经演化成算法引擎了
  • #T1359. 围成面积
  • Java并发编程:sleep()与wait()核心区别详解
  • 通过Interface扫描获取所有其实现类
  • AI 浪潮下阿里云“高光”乍现,但离终局胜利尚远
  • MySQL主从复制进阶(GTID复制,半同步复制)
  • 搭建基于 Solon AI 的 Streamable MCP 服务并部署至阿里云百炼
  • 鸿蒙NEXT动画开发指南:组件与页面典型动画场景解析
  • ios按键精灵提示 “设备信息丢失”如何处理?
  • 在Ant Design Vue 中使用图片预览的插件