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

相关推荐
00后程序员张9 小时前
iOS混淆与IPA文件加固全流程实战 防止苹果应用被反编译的工程级方案
android·ios·小程序·https·uni-app·iphone·webview
2501_9151063210 小时前
iOS 应用加固与苹果软件混淆指南,如何防止 IPA 被反编译与二次打包?
android·ios·小程序·https·uni-app·iphone·webview
卓码软件测评1 天前
第三方媒体流压力测试:k6插件xk6-webrtc的使用来测试媒体流的性能
网络协议·测试工具·http·https·webrtc·ssl·媒体
00后程序员张1 天前
Swoole HTTPS 实战,在生产环境部署、性能权衡与排查流程
后端·ios·小程序·https·uni-app·iphone·swoole
AirDroid_cn2 天前
Win11 远程桌面:连接公司电脑时,提示 “证书错误” 如何解决?
windows·网络协议·https·ssl·电脑技巧
2501_915909062 天前
iOS App 上架全流程详解:证书配置、打包上传、审核技巧与跨平台上架工具 开心上架 实践
android·ios·小程序·https·uni-app·iphone·webview
2501_915918412 天前
开发 iOS 应用全流程指南,环境搭建、证书配置与跨平台使用 开心上架 上架AppStore
android·ios·小程序·https·uni-app·iphone·webview
2501_915106322 天前
Comodo HTTPS 在工程中的部署与排查实战(证书链、兼容性与真机抓包策略)
网络协议·http·ios·小程序·https·uni-app·iphone
2501_915909062 天前
苹果软件混淆与 iOS 代码加固趋势,IPA 加密、应用防反编译与无源码保护的工程化演进
android·ios·小程序·https·uni-app·iphone·webview
2501_916007472 天前
苹果软件混淆与 iOS 应用加固实录,从被逆向到 IPA 文件防反编译与无源码混淆解决方案
android·ios·小程序·https·uni-app·iphone·webview