OpenSSL数字证书签名全流程指南

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:OpenSSL 是广泛用于创建和管理数字证书的安全工具包。本文围绕 OpenSSL 的 openssl ca 命令,详细讲解如何使用相关文件完成证书请求(CSR)的签署过程。内容涵盖根CA的创建、配置文件设置、CSR生成与签署、证书安装等关键步骤,并解释了所需文件的作用和管理方式。通过本指南,读者可以掌握构建本地CA体系、签署证书的完整流程,提升在SSL/TLS安全通信中的实践能力。
OpenSSL签名

1. OpenSSL 工具概述

OpenSSL 是一个开源的加密库与工具集,广泛应用于网络安全领域,尤其在 TLS/SSL 协议实现、数字证书管理、密钥生成与数据加密等方面具有核心地位。它不仅提供底层加密算法支持(如 AES、RSA、SHA 系列),还提供命令行工具,便于开发者和系统管理员进行安全通信的构建与调试。

其主要功能模块包括:

模块 功能说明
libcrypto 提供通用加密函数,如对称加密、非对称加密、哈希算法等
libssl 实现 SSL/TLS 协议栈,支持安全通信
openssl 命令行工具 提供证书生成、签名、加密解密、CSR 创建等操作接口

例如,使用 OpenSSL 生成一个 RSA 私钥的命令如下:

openssl genrsa -out private.key 2048
  • genrsa :表示生成 RSA 密钥
  • -out private.key :指定输出文件名
  • 2048 :密钥长度,单位为比特,常见值为 2048 或 4096

通过本章学习,读者将掌握 OpenSSL 的基础功能及其在证书生命周期管理中的关键作用,为后续深入理解证书签发流程奠定基础。

2. 数字证书与CA认证原理

数字证书是现代网络安全体系中的核心组成部分,它通过公钥基础设施(Public Key Infrastructure, PKI)实现身份认证与数据完整性保护。理解数字证书的工作原理、结构组成及其在CA(Certificate Authority,证书颁发机构)认证体系中的角色,是掌握OpenSSL等安全工具使用逻辑的前提。本章将深入探讨数字证书的定义与结构、X.509标准的演进、PKI体系的核心组件,以及数字签名与证书链的构建逻辑,并最终解析CA认证流程在OpenSSL中的实现方式。

2.1 数字证书的基本概念

数字证书是一种用于证明某一方身份的电子文档,通常包含公钥、持有者身份信息、证书有效期、颁发者信息、签名算法及CA的数字签名。通过数字证书,通信双方可以在不依赖信任中介的前提下验证对方身份,确保通信的安全性。

2.1.1 什么是数字证书及其组成结构

数字证书本质上是一个结构化的数据文件,遵循国际标准如X.509。一个典型的X.509证书包括以下几个主要组成部分:

字段名称 说明
版本号(Version) 指明证书格式版本,如v1、v2、v3
序列号(Serial Number) CA为每个证书分配的唯一编号
签名算法(Signature Algorithm) 用于生成证书签名的算法,如RSA+SHA256
颁发者(Issuer) 证书颁发机构的DN(Distinguished Name)信息
主体(Subject) 证书持有者的DN信息,如域名、组织名称等
公钥信息(Public Key Info) 包括算法标识和公钥值
有效期(Validity) 包含起始时间和结束时间
扩展字段(Extensions) 可选,用于添加额外信息,如用途限制、密钥用法等
签名值(Signature Value) 由CA使用私钥对证书内容的签名

这些字段共同构成了数字证书的基本结构。证书的验证过程依赖于签名算法与CA的公钥。例如,当浏览器访问一个HTTPS网站时,会自动验证服务器提供的证书是否由受信任的CA签名,从而判断连接是否可信。

2.1.2 X.509 证书标准与版本差异

X.509 是国际电信联盟(ITU)定义的数字证书标准,广泛应用于TLS/SSL协议中。X.509证书经历了多个版本的演进:

  • X.509 v1 :最初版本,仅包含基本字段,不支持扩展,灵活性较差。
  • X.509 v2 :引入了颁发者和主体的唯一标识符,但扩展性仍然有限。
  • X.509 v3 :最常用版本,引入扩展机制,支持如Subject Alternative Name(SAN)、Key Usage、Basic Constraints等关键功能。

v3版本通过扩展字段极大增强了证书的灵活性,使其能够满足不同场景下的安全需求。例如,SAN扩展允许一个证书支持多个域名,而Basic Constraints用于限制证书是否可以作为CA使用。

2.2 公钥基础设施(PKI)体系

PKI 是构建安全通信的基础框架,通过数字证书、CA、RA等组件实现身份认证与数据加密。

2.2.1 PKI 的核心组件与信任模型

PKI体系的核心组件包括:

  • CA(Certificate Authority) :负责签发和管理数字证书。
  • RA(Registration Authority) :负责用户身份验证和证书申请的初步审核。
  • CRL(Certificate Revocation List) :记录已被吊销的证书列表。
  • 证书库 :存储和发布证书的数据库。
  • 终端实体(End Entity) :证书的使用者,如Web服务器或客户端。

信任模型主要分为以下几种:

  1. 单层信任模型 :一个根CA直接签发所有证书。
  2. 分层信任模型 :多个子CA由根CA签发,形成树状结构。
  3. 网状信任模型 :多个CA相互交叉认证,适用于分布式环境。

在实际应用中,分层模型最为常见。例如,浏览器内置的根CA可签发中间CA,中间CA再签发终端证书,从而构建出完整的证书链。

2.2.2 CA、RA 与 CRL 的角色分工

组件 角色描述
CA 签发证书、管理证书生命周期、生成CRL
RA 负责用户身份审核、提交证书申请、协助吊销
CRL 存储和发布已被吊销的证书列表,供客户端验证时使用

以OpenSSL为例,可以通过以下命令生成CRL:

openssl ca -gencrl -out crl.pem -config openssl.cnf

此命令基于配置文件 openssl.cnf 生成CRL文件 crl.pem ,其中包含所有被吊销的证书序列号。CRL的验证机制确保了客户端可以实时检测证书是否已被撤销,从而避免继续信任已被盗用的证书。

2.3 数字签名的工作机制

数字签名是保障数据完整性和不可否认性的关键技术,它结合了非对称加密与哈希算法。

2.3.1 非对称加密与哈希算法的结合

数字签名的基本流程如下:

  1. 生成哈希值 :发送方使用哈希算法(如SHA-256)对原始数据进行摘要处理。
  2. 私钥签名 :将哈希值使用发送方的私钥进行加密,生成数字签名。
  3. 传输数据与签名 :将原始数据和签名一起发送。
  4. 验证签名 :接收方使用发送方的公钥解密签名,得到哈希值A;再对收到的数据计算哈希值B;若A==B,则验证通过。

这种机制确保了数据在传输过程中未被篡改,同时发送方无法否认已发送的数据。

例如,使用OpenSSL对一个文件进行签名的命令如下:

openssl dgst -sha256 -sign private.key -out signature.bin file.txt

代码解析:

  • openssl dgst :调用摘要命令。
  • -sha256 :指定使用SHA-256哈希算法。
  • -sign private.key :使用私钥 private.key 进行签名。
  • -out signature.bin :输出签名结果到 signature.bin 文件。
  • file.txt :待签名的原始文件。

2.3.2 签名验证流程与证书链构建

验证流程如下:

  1. 获取证书链:从终端实体证书到根CA证书的完整路径。
  2. 逐级验证签名:使用上一级证书的公钥验证当前证书的签名。
  3. 检查CRL或OCSP:确认证书未被吊销。
  4. 校验证书用途:检查证书的Key Usage和Extended Key Usage字段是否匹配使用场景。

例如,使用OpenSSL验证一个证书链:

openssl verify -CAfile ca-chain.pem server.crt

代码解析:

  • openssl verify :调用验证命令。
  • -CAfile ca-chain.pem :指定根CA和中间CA证书文件。
  • server.crt :待验证的终端证书。

该命令将逐级验证证书链,并输出验证结果。若验证成功,表示该证书由可信CA签发且未被吊销。

2.4 CA认证流程在OpenSSL中的实现逻辑

OpenSSL 提供了一整套工具链用于管理证书的生命周期,包括生成密钥、创建CSR、签发证书、吊销证书等。

2.4.1 OpenSSL中证书生命周期管理

证书生命周期包括以下阶段:

  1. 生成私钥与CSR :使用 openssl req 命令生成CSR。
  2. 签发证书 :使用 openssl ca 命令由CA签发证书。
  3. 吊销证书 :使用 openssl ca -revoke 命令吊销证书。
  4. 生成CRL :使用 openssl ca -gencrl 生成吊销列表。
  5. 更新索引文件 :维护 index.txt 文件以记录证书状态。

例如,吊销证书的命令如下:

openssl ca -revoke cert.pem -config openssl.cnf

参数说明:

  • -revoke cert.pem :指定要吊销的证书文件。
  • -config openssl.cnf :使用指定配置文件。

执行后,OpenSSL会更新 index.txt 文件,并将该证书标记为吊销状态。

2.4.2 证书签发与吊销的基本流程

证书签发流程
  1. 生成私钥:
    bash openssl genrsa -out server.key 2048

  2. 创建CSR:
    bash openssl req -new -key server.key -out server.csr

  3. 使用CA签发证书:
    bash openssl ca -in server.csr -out server.crt -config openssl.cnf

证书吊销流程
  1. 使用CA吊销证书:
    bash openssl ca -revoke server.crt -config openssl.cnf

  2. 生成CRL:
    bash openssl ca -gencrl -out crl.pem -config openssl.cnf

整个流程中,OpenSSL通过维护 index.txt serial 文件来跟踪证书状态和序列号,确保证书管理的准确性和一致性。

总结

通过本章的深入解析,我们了解了数字证书的基本构成、X.509标准的演进、PKI体系的组件与信任模型、数字签名的实现机制以及CA认证流程在OpenSSL中的具体实现方式。这些知识为后续章节中实际操作OpenSSL工具打下了坚实的理论基础。

3. 根CA的创建与管理

在构建完整的公钥基础设施(PKI)过程中,根证书颁发机构(Root CA)是整个信任体系的最顶端,其安全性与稳定性直接决定了整个PKI体系的信任基础。根CA负责签发中间CA证书,并通过信任链传递到终端实体证书(如服务器证书、客户端证书等)。因此,创建和管理根CA是一个系统性工程,需要从密钥保护、证书结构设计、生命周期管理到安全加固等多个维度进行考虑。

本章将围绕根CA的创建与管理流程展开,详细解析从前期准备、生成自签名根证书、日常维护到安全加固的全过程,并结合OpenSSL命令行工具进行实际操作演示,帮助读者掌握根CA的构建与维护技巧。

3.1 创建根CA的准备工作

在开始创建根CA之前,必须进行充分的准备工作,包括密钥生成策略、根证书用途规划以及证书有效期设定等。这些准备步骤不仅影响根CA的可用性,也直接关系到整个PKI架构的安全性和可维护性。

3.1.1 密钥生成与保护策略

根CA的核心是其私钥,一旦私钥泄露,整个PKI信任体系将被彻底破坏。因此,在生成根CA密钥时,必须采用高强度的加密算法,并结合合适的保护策略。

OpenSSL生成根CA私钥命令如下:

openssl genrsa -aes256 -out root-ca.key 4096
  • genrsa :生成RSA密钥对。
  • -aes256 :使用AES-256算法对私钥进行加密,防止未授权访问。
  • -out root-ca.key :输出私钥文件名为 root-ca.key
  • 4096 :指定密钥长度为4096位,增强安全性。

逻辑分析:
- 使用 -aes256 参数是为了在密钥存储时提供额外保护层,访问密钥时需要输入密码。
- 密钥长度推荐使用4096位,因为2048位密钥在2025年后可能不再被认为是安全的。

⚠️ 注意 :生成私钥后,务必将其存储在安全的离线环境中,如加密USB设备或HSM(硬件安全模块)中,并定期备份。

3.1.2 根证书的有效期与用途规划

根CA证书的有效期通常较长,一般为10~20年。过短的证书有效期会增加证书更新的复杂度,而过长则可能因加密算法演进导致安全性下降。

根CA证书用途规划:
- 用途限定 :根CA应仅用于签发中间CA证书,不应直接签发终端实体证书。
- 扩展字段配置 :应在证书中配置 basicConstraints 扩展,明确其为CA证书,并设置路径长度限制。

openssl req -new -x509 -days 3650 -key root-ca.key -out root-ca.crt -extensions v3_ca
  • -x509 :生成自签名证书。
  • -days 3650 :证书有效期为10年。
  • -extensions v3_ca :引用配置文件中定义的v3_ca扩展。

逻辑分析:
- 该命令用于生成自签名根CA证书,有效期为10年。
- -extensions v3_ca 是关键参数,用于在证书中嵌入CA相关扩展,确保其被正确识别为根CA。

建议 :在实际生产环境中,应结合 openssl.cnf 文件详细配置扩展字段,以满足组织内部的策略需求。

3.2 使用OpenSSL创建根CA证书

创建根CA的核心步骤包括生成自签名证书、选择合适的证书格式以及确保证书文件的可读性和可管理性。

3.2.1 自签名根证书的生成步骤

根CA证书本质上是一个自签名的X.509证书,其生成过程通常包括以下几个步骤:

  1. 生成私钥(已执行)
  2. 生成自签名证书
  3. 查看证书内容

生成自签名根CA证书命令如下:

openssl req -new -x509 -days 3650 -key root-ca.key -out root-ca.crt -config openssl.cnf -extensions v3_ca
  • -config openssl.cnf :指定配置文件,确保扩展字段正确应用。
  • -extensions v3_ca :应用v3_ca段中的扩展定义,包括 basicConstraints keyUsage 等。

逻辑分析:
- -config 参数是关键,确保在生成证书时可以引用配置文件中的扩展字段定义。
- v3_ca 扩展内容通常如下(在 openssl.cnf 文件中定义):

[v3_ca]
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer
basicConstraints = critical, CA:true, pathlen:0
keyUsage = critical, cRLSign, keyCertSign
  • basicConstraints 设置 CA:true 表示该证书是CA证书, pathlen:0 表示该CA不能签发其他CA证书(适用于根CA)。
  • keyUsage 设置 keyCertSign cRLSign ,表示该密钥用于签发证书和吊销列表。

3.2.2 根证书文件的格式与存储方式

X.509证书支持多种格式,常见的有:

格式 描述 文件扩展名
PEM 基于Base64编码的文本格式,易于查看和编辑 .pem , .crt
DER 二进制格式,适合嵌入系统或程序中 .der
P7B 包含多个证书但不包含私钥 .p7b
PFX 包含证书和私钥的加密容器 .pfx , .p12

查看PEM格式证书内容命令:

openssl x509 -in root-ca.crt -text -noout
  • -text :以可读格式显示证书内容。
  • -noout :不输出原始证书数据。

输出示例片段:

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 12:34:56:78:90:ab:cd:ef
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=CN, ST=Beijing, L=Haidian, O=MyCompany, OU=Security, CN=Root CA
        Validity
            Not Before: Apr  1 00:00:00 2024 GMT
            Not After : Apr  1 00:00:00 2034 GMT
        Subject: C=CN, ST=Beijing, L=Haidian, O=MyCompany, OU=Security, CN=Root CA
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
            RSA Public-Key: (4096 bit)
        Extensions:
            X509v3 Basic Constraints: 
                CA:TRUE, pathlen:0
            X509v3 Key Usage: 
                Digital Signature, Certificate Sign, CRL Sign

逻辑分析:
- 证书版本为3,支持扩展字段。
- Basic Constraints 设置 CA:TRUE ,且 pathlen:0 表示这是根CA。
- Key Usage 包含 Certificate Sign CRL Sign ,说明该证书可用于签发和吊销其他证书。

💡 建议 :在生产环境中,应定期使用工具(如 openssl verify )验证证书链的完整性,确保根CA证书始终处于可信状态。

3.3 根CA的日常管理与维护

根CA一旦创建完成,便进入长期的维护阶段。维护工作主要包括密钥管理、证书吊销列表(CRL)生成与更新等任务。

3.3.1 密钥的安全存储与备份机制

根CA私钥的保护是整个PKI体系中最关键的一环。建议采取以下措施:

  • 离线存储 :将私钥文件存储在物理隔离的设备中,如加密USB设备或HSM模块。
  • 多重备份 :使用安全的备份介质(如只读介质)进行多份备份,并分别存放于不同地点。
  • 访问控制 :限制私钥文件的访问权限,仅授权特定人员操作。

查看私钥权限设置:

ls -l root-ca.key

输出示例:

-rw------- 1 user group 3243 Apr 1 00:00 root-ca.key
  • -rw------- :表示只有所有者可读写,其他人无权限访问。

逻辑分析:
- 权限设置应严格限制,防止未授权访问。
- 建议使用 chmod 600 root-ca.key 确保权限安全。

3.3.2 证书吊销列表(CRL)的生成与更新

CRL(Certificate Revocation List)用于记录被吊销的证书,帮助验证方识别无效证书。

生成CRL命令如下:

openssl ca -gencrl -config openssl.cnf -out root-ca.crl
  • -gencrl :生成CRL。
  • -out root-ca.crl :输出CRL文件。

查看CRL内容:

openssl crl -in root-ca.crl -text -noout

输出示例片段:

Certificate Revocation List (CRL):
    Version 2 (0x1)
    Signature Algorithm: sha256WithRSAEncryption
    Issuer: /C=CN/ST=Beijing/L=Haidian/O=MyCompany/OU=Security/CN=Root CA
    Last Update: Apr  1 00:00:00 2024 GMT
    Next Update: Apr  1 00:00:00 2025 GMT
    CRL extensions:
        X509v3 Authority Key Identifier:
            keyid:...
        X509v3 CRL Number:
            integer:1

逻辑分析:
- Last Update Next Update 定义CRL的有效期。
- CRL Number 用于版本控制,每次更新应递增。

📌 建议 :定期更新CRL并发布至可访问的HTTP或LDAP路径,供终端设备下载验证。

3.4 根CA的安全性加固实践

随着网络安全威胁的增加,根CA的安全性必须得到进一步加强。以下为两种常见的加固实践:

3.4.1 硬件安全模块(HSM)的应用

HSM(Hardware Security Module)是一种专用加密设备,能够提供安全的密钥存储和加密操作环境。

HSM在根CA中的应用优势:
- 密钥不出HSM :私钥永远不离开HSM设备,极大提升安全性。
- 硬件级加密 :提供比软件更强的加密性能与抗攻击能力。
- 审计日志 :支持详细的访问与操作日志记录。

使用HSM生成根CA私钥示例(需HSM驱动支持):

openssl req -new -keyform engine -engine pkcs11 -key slot_0 -out root-ca.csr
  • -keyform engine :使用OpenSSL引擎接口。
  • -engine pkcs11 :加载PKCS#11兼容的HSM驱动。
  • -key slot_0 :指定HSM中的密钥槽位。

逻辑分析:
- 该命令通过HSM生成CSR,私钥始终保存在HSM中,无法导出。
- 需要配置 openssl.cnf 中的 engines 段以支持HSM。

3.4.2 根CA离线保护与访问控制策略

为了防止根CA遭受网络攻击,建议将其部署在离线环境中。

离线保护策略:
- 物理隔离 :将根CA部署在无网络连接的计算机上。
- 临时上线机制 :仅在必要时(如签发中间CA)上线,完成后立即断网。
- 权限分离 :将证书签发、吊销、备份等操作分配给不同人员,防止单一权限滥用。

访问控制策略:
- 使用双因素认证(如USB Token + 密码)控制对根CA的操作。
- 操作日志审计,记录所有对根CA的操作行为。

mermaid流程图:

graph TD
    A[根CA请求] --> B{是否为授权操作?}
    B -- 是 --> C[临时连接网络]
    C --> D[执行签发/吊销]
    D --> E[立即断开网络]
    B -- 否 --> F[拒绝访问]

逻辑分析:
- 流程图展示了根CA在离线环境下如何进行受控访问。
- 所有操作均需经过授权验证,确保安全性。

本章系统地介绍了根CA的创建与管理流程,从密钥生成、证书创建、格式管理到日常维护与安全加固,覆盖了从准备到实践的完整过程。通过本章内容,读者可以掌握构建根CA所需的核心技能,并理解其在PKI体系中的重要地位。

4. openssl.cnf 配置文件设置

openssl.cnf 是 OpenSSL 工具链中用于定义证书生成、签发和管理行为的核心配置文件。它决定了诸如证书请求格式、默认密钥长度、签名算法、扩展字段等关键参数。深入理解并正确配置 openssl.cnf 是构建可信 PKI 体系的重要基础,尤其在企业级证书管理中,合理的配置能够提升自动化程度、增强安全性并减少人为错误。

4.1 openssl.cnf 文件的基本结构

OpenSSL 配置文件采用 INI 格式,以 [section] 划分不同的功能模块,每个模块内定义一系列键值对参数。理解其结构是有效配置的前提。

4.1.1 主要配置段落及其作用范围

以下是 openssl.cnf 中常见且重要的配置段落:

配置段名 描述 用途示例
default 默认配置项,定义全局变量 dir = ./demoCA
ca openssl ca 命令相关的证书签发配置 policy = policy_match
req openssl req 命令相关的 CSR 生成配置 prompt = no
policy_* 策略段,定义签发证书时的字段匹配规则 commonName = supplied
v3_ca v3_req 扩展配置段,用于定义证书扩展字段 subjectKeyIdentifier = hash

例如,以下是一个典型的 openssl.cnf 配置段定义:

[ req ]
default_bits        = 2048
distinguished_name  = req_distinguished_name
req_extensions      = v3_req
prompt              = no

[ req_distinguished_name ]
C  = CN
ST = Beijing
L  = Haidian
O  = Example Organization
OU = IT Department
CN = example.com

这段配置表示:生成 CSR 时使用 2048 位密钥,不提示用户输入信息,使用 v3_req 段定义的扩展字段,并预设了 DN 信息。

4.1.2 默认配置与自定义配置的差异

OpenSSL 安装时自带默认的 openssl.cnf 文件,通常位于 /etc/ssl/openssl.cnf /usr/lib/ssl/openssl.cnf 。该文件适用于通用场景,但无法满足特定需求,例如:

  • 企业证书需要包含 SAN(Subject Alternative Name)
  • 需要强制某些字段必须填写
  • 使用 SHA-384 或 SHA-512 等更安全的签名算法
  • 配置多个 CA 环境下的不同策略

因此,通常我们会复制默认配置文件,并根据实际需要进行自定义修改。例如:

cp /etc/ssl/openssl.cnf ~/my_openssl.cnf

然后在执行命令时通过 -config 参数指定:

openssl req -new -keyout key.pem -out csr.pem -config ~/my_openssl.cnf

4.2 与证书签发相关的配置项详解

本节将详细介绍 openssl.cnf 中与证书签发密切相关的两个核心段落: req ca

4.2.1 req 段:CSR生成相关配置

req 段主要用于控制 openssl req -new 命令生成证书签名请求(CSR)的行为。

常见配置项如下:

[ req ]
default_bits        = 2048
default_md          = sha256
distinguished_name  = req_distinguished_name
attributes          = req_attributes
prompt              = no
req_extensions      = v3_req
  • default_bits :指定默认生成的私钥位数,推荐使用 2048 或 4096。
  • default_md :指定默认的摘要算法,如 sha256 sha384
  • distinguished_name :指定 DN 信息来源段,通常指向 req_distinguished_name
  • prompt :是否交互式输入 DN 信息,设为 no 可用于自动化。
  • req_extensions :指定 CSR 中包含的扩展字段段,如 v3_req
示例代码:生成 CSR 并查看其内容
openssl req -new -keyout key.pem -out csr.pem -config ~/my_openssl.cnf

逻辑分析
- 使用 ~/my_openssl.cnf 中定义的 req 段生成 CSR。
- 私钥生成为 key.pem ,CSR 输出为 csr.pem
- prompt = no 表示不交互输入,直接使用配置文件中的 DN 信息。

查看 CSR 内容命令

openssl req -in csr.pem -noout -text

4.2.2 ca 段:证书签发策略配置

ca 段用于控制 openssl ca 命令签发证书时的行为,包括:

[ ca ]
default_ca      = CA_default

[ CA_default ]
dir             = ./my_ca
certs           = $dir/certs
crl_dir         = $dir/crl
new_certs_dir   = $dir/newcerts
database        = $dir/index.txt
serial          = $dir/serial
private_key     = $dir/private/ca.key.pem
certificate     = $dir/certs/ca.cert.pem
crl             = $dir/crl.pem
policy          = policy_match
  • dir :根目录,建议单独建立 CA 管理目录。
  • database :记录已签发证书的索引文件。
  • policy :定义签发证书时 DN 字段的匹配策略。
签发证书命令示例:
openssl ca -config ~/my_openssl.cnf -in csr.pem -out cert.pem

逻辑分析
- 使用 ~/my_openssl.cnf ca 段的配置签发证书。
- CSR 输入为 csr.pem ,输出为 cert.pem
- 系统会自动更新 index.txt serial 文件。

4.3 自定义配置以满足特定需求

为了满足复杂场景下的证书管理需求, openssl.cnf 支持多 CA 管理和扩展字段的自定义配置。

4.3.1 多CA配置与多策略支持

在企业环境中,可能需要为不同的业务部门维护多个 CA。为此,可以定义多个 CA_* 段:

[ ca ]
default_ca = CA_dev

[ CA_dev ]
dir = ./dev_ca

[ CA_prod ]
dir = ./prod_ca

这样在签发证书时可以指定使用哪个 CA:

openssl ca -config ~/my_openssl.cnf -name CA_prod -in csr.pem -out cert.pem
多策略示例:
[ policy_dev ]
commonName = optional
organizationName = supplied

[ policy_prod ]
commonName = supplied
organizationName = supplied

通过 policy = policy_dev policy_prod 可以实现不同策略的灵活切换。

4.3.2 证书扩展字段的配置方法

扩展字段用于定义证书的用途、增强安全性和支持特定功能,例如 SAN、OCSP、CRL 分发点等。

[ v3_req ]
subjectAltName = @alt_names

[ alt_names ]
DNS.1 = example.com
DNS.2 = www.example.com
IP.1 = 192.168.1.100
签发包含 SAN 的证书流程图(Mermaid)
graph TD
    A[生成私钥] --> B[创建 CSR]
    B --> C[使用 v3_req 扩展]
    C --> D[提交 CSR 给 CA]
    D --> E[签发含 SAN 的证书]
示例代码:签发包含 SAN 的证书
openssl req -new -key key.pem -out csr.pem -config ~/my_openssl.cnf
openssl ca -config ~/my_openssl.cnf -in csr.pem -out cert.pem

参数说明
- v3_req 段定义的 SAN 字段将被写入最终证书。
- 签发后可通过以下命令查看扩展字段:

openssl x509 -in cert.pem -noout -text

4.4 配置文件的验证与调试

配置错误是证书签发失败的常见原因。本节介绍如何验证和调试 openssl.cnf 文件。

4.4.1 openssl命令验证配置有效性

OpenSSL 提供了 openssl config 命令用于检查配置文件语法:

openssl config -verify -config ~/my_openssl.cnf

输出说明
- 若无错误,输出为空;
- 若存在语法错误,会提示具体错误位置。

此外,可以使用 openssl req 命令生成 CSR 并查看输出是否符合预期:

openssl req -new -key key.pem -out csr.pem -config ~/my_openssl.cnf
openssl req -in csr.pem -noout -text

4.4.2 常见配置错误与解决方法

错误类型 描述 解决方法
Section not found 指定的段不存在 检查 default_ca 是否拼写正确
Unknown name 某个字段未定义 检查是否遗漏了 [v3_req] 等段名
Missing database file 缺少 index.txt serial 手动创建并初始化这些文件
Policy mismatch DN 字段不匹配策略 检查 DN 是否与 policy_* 中要求一致
Extension not found 扩展字段未定义 确保使用 -extensions 参数或配置文件中指定了扩展段
示例代码:检查证书签发配置
openssl ca -config ~/my_openssl.cnf -in csr.pem -out cert.pem -dryrun

参数说明
- -dryrun :模拟签发过程,不真正写入文件,用于调试配置是否正确。

本章详细介绍了 openssl.cnf 的基本结构、核心配置段落的作用、自定义配置的方法以及常见错误的调试技巧。掌握这些内容,有助于构建更安全、灵活的证书管理系统,为后续的证书签发与管理打下坚实基础。

5. CSR(证书签名请求)生成方法

5.1 CSR的基本构成与作用

5.1.1 公钥信息与主体信息的封装

在现代公钥基础设施(PKI)中,证书签名请求(Certificate Signing Request,CSR)是申请数字证书的第一步。CSR 是一个包含公钥信息、主体身份信息以及签名的数据结构,用于向证书颁发机构(CA)请求签发证书。

一个完整的 CSR 包含以下几个核心部分:

组成部分 描述
主体信息(Subject) 包括国家(C)、组织(O)、组织单位(OU)、通用名称(CN)等信息,用于标识证书申请者的身份。
公钥信息(Public Key) 包含申请者生成的公钥,与之对应的私钥保留在本地,用于后续的加密通信或签名验证。
签名(Signature) 使用私钥对上述信息进行数字签名,确保请求内容的完整性和不可否认性。

在 OpenSSL 中,CSR 通常以 PEM 格式存储,其内容如下所示:

-----BEGIN CERTIFICATE REQUEST-----
MIIBXTCB5wIBADBFMQswCQYDVQQGEwJDTjEOMAwGA1UEChMFRG9ja2VyMQ8wDQYDVQQL
EwZTZXJ2ZXJzMRkwFwYDVQQDExB3d3cuZXhhbXBsZS5jb20wWTATBgcqhkjOPQIBBggq
hkjOPQMBBwNCAARJQv5qK6hJq3q3zqjV8JtWzY7J7o75QZqK7o5w0GZ8986V5X86V5X8
6V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X8
6V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X8
6V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X8
6V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X8
6V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X8
6V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X8
6V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X8
6V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X8
6V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X8
6V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X8
6V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X8
6V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X8
6V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X8
6V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X8
6V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X8
6V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X8
6V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X8
6V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X8
6V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X8
6V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X8
6V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X8
6V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X8
6V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X8
6V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X8
6V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X8
6V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X8
6V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X8
6V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X8
6V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X8
6V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X8
6V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X8
6V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X8
6V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X8
6V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X8
6V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X8
6V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V5X86V......
-----END CERTIFICATE REQUEST-----

该文件由 Base64 编码组成,并包含完整的公钥信息和签名数据。CSR 本身不包含私钥,因此即使被截获,攻击者也无法伪造签名。

5.1.2 CSR在证书签发流程中的角色

CSR 是整个证书签发流程的核心输入文件。其在证书签发流程中的作用如下:

graph TD
    A[用户生成私钥] --> B[使用私钥生成CSR]
    B --> C[提交CSR至CA]
    C --> D[CA验证CSR签名]
    D --> E[CA使用根证书签名CSR]
    E --> F[生成最终证书并返回给用户]

在上述流程中,CSR 的作用可以总结为:

  • 身份认证 :CSR 中的主体信息用于标识证书申请者身份。
  • 密钥绑定 :通过签名验证,CA 可以确认公钥确实属于 CSR 中声明的实体。
  • 签名基础 :CA 使用自己的私钥对 CSR 内容进行签名,生成最终的数字证书。

5.2 使用OpenSSL生成CSR的步骤

5.2.1 私钥生成与CSR请求创建

生成 CSR 的第一步是创建私钥。OpenSSL 提供了多种加密算法供选择,常见的有 RSA、ECDSA 等。

示例:生成 RSA 私钥并创建 CSR
# 生成 2048 位的 RSA 私钥
openssl genrsa -out private.key 2048

# 生成 CSR 并交互式输入主体信息
openssl req -new -key private.key -out csr.pem
  • genrsa :生成 RSA 私钥;
  • -out private.key :输出私钥文件;
  • 2048 :密钥长度;
  • req -new :生成新的 CSR;
  • -key private.key :指定私钥文件;
  • -out csr.pem :输出 CSR 文件。

执行过程中会提示输入主体信息:

Country Name (2 letter code) [XX]: CN
State or Province Name (full name) []: Beijing
Locality Name (eg, city) [Default City]: Beijing
Organization Name (eg, company) [Default Company Ltd]: Docker Inc
Organizational Unit Name (eg, section) []: Server Team
Common Name (eg, your name or your server's hostname) []: www.example.com
Email Address []: admin@example.com
逻辑分析:
  • genrsa 命令使用 RSA 算法生成私钥;
  • req -new 命令基于私钥生成 CSR;
  • 输入的主体信息将被编码到 CSR 的 DN(Distinguished Name)字段中;
  • 最终输出的 csr.pem 文件可用于提交给 CA。

5.2.2 多域名(SAN)证书的CSR生成

当需要为多个域名签发一张证书时,需要在 CSR 中包含 SAN(Subject Alternative Name)扩展字段。

示例:生成包含 SAN 的 CSR
# 生成私钥
openssl genrsa -out private.key 2048

# 创建 openssl.cnf 配置文件,添加 SAN 扩展
cat > openssl.cnf <<EOF
[ req ]
default_bits = 2048
prompt = no
default_md = sha256
req_extensions = req_ext
distinguished_name = dn

[ dn ]
C = CN
ST = Beijing
L = Beijing
O = Docker Inc
OU = Server Team
CN = www.example.com

[ req_ext ]
subjectAltName = @alt_names

[ alt_names ]
DNS.1 = www.example.com
DNS.2 = example.com
DNS.3 = blog.example.com
EOF

# 生成 CSR
openssl req -new -key private.key -out csr.pem -config openssl.cnf
参数说明:
  • prompt = no :关闭交互式输入;
  • req_extensions = req_ext :启用扩展字段;
  • subjectAltName = @alt_names :指定 SAN 字段引用的别名组;
  • DNS.x :定义多个域名。
逻辑分析:
  • 使用自定义配置文件指定 SAN 扩展;
  • CSR 包含多个域名信息,便于 CA 签发多域名证书;
  • 此类 CSR 适用于网站、邮件服务器等需要多个域名绑定的场景。

5.3 CSR的格式与内容分析

5.3.1 PEM与DER格式的转换与查看

CSR 可以以 PEM 或 DER 格式存储。PEM 是 Base64 编码文本格式,适合阅读和复制;DER 是二进制格式,常用于程序处理。

示例:PEM 与 DER 格式转换
# PEM 转 DER
openssl req -out csr.der -outform der -in csr.pem -inform pem

# DER 转 PEM
openssl req -in csr.der -inform der -out csr.pem -outform pem
逻辑分析:
  • -outform der :指定输出格式为 DER;
  • -inform pem :输入格式为 PEM;
  • 该命令适用于不同系统或程序之间的格式兼容处理。

5.3.2 CSR内容解析与字段说明

使用 OpenSSL 可以查看 CSR 的详细内容。

示例:解析 CSR 内容
openssl req -in csr.pem -noout -text

输出内容包括:

  • 主体信息(DN);
  • 公钥算法与长度;
  • 请求扩展字段(如 SAN);
  • 签名算法与签名值。
输出示例片段:
Certificate Request:
    Data:
        Version: 1 (0x0)
        Subject: C=CN, ST=Beijing, L=Beijing, O=Docker Inc, OU=Server Team, CN=www.example.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:ab:cd:ef:...(省略)
                Exponent: 65537 (0x10001)
        Attributes:
            a0:00
        Requested Extensions:
            subjectAltName:
                DNS:www.example.com, DNS:example.com, DNS:blog.example.com
    Signature Algorithm: sha256WithRSAEncryption
         Signature Value:
            00:ab:cd:ef:...
字段说明:
字段 描述
Version CSR 版本号,通常为 1
Subject 主体信息(国家、组织、通用名等)
Public-Key 公钥类型与长度
Modulus RSA 公钥模数
Exponent 指数,默认为 65537
Extensions 请求的扩展字段,如 SAN
Signature Algorithm 签名算法
Signature Value 使用私钥计算的签名值

5.4 CSR的验证与提交实践

5.4.1 CSR签名验证与信息确认

在提交 CSR 之前,建议验证其签名是否有效,并检查主体信息是否正确。

示例:验证 CSR 签名
openssl req -in csr.pem -noout -verify -key private.key
输出示例:
verify OK

若输出 verify OK ,则说明 CSR 的签名有效,且使用的私钥匹配。

参数说明:
  • -verify :验证签名;
  • -key private.key :指定用于验证的私钥。
逻辑分析:
  • 通过签名验证,可确保 CSR 的完整性和私钥匹配;
  • 若签名无效,可能是私钥不匹配或 CSR 被篡改。

5.4.2 CSR提交至CA的常见方式

CSR 提交方式取决于 CA 的接口类型,常见方式包括:

提交方式 说明
Web 界面提交 多数商业 CA 提供网页上传 CSR 的功能
命令行提交(如 Let’s Encrypt) ACME 协议支持自动化提交 CSR
邮件提交 部分企业内部 CA 采用邮件方式接收 CSR
API 接口提交 支持 RESTful 或 SOAP 接口提交 CSR
示例:使用 curl 提交 CSR 到 ACME CA(如 Let’s Encrypt)
curl -X POST https://acme.example.com/api/v1/csr \
     -H "Authorization: Bearer YOUR_API_TOKEN" \
     -F "csr=@csr.pem"
逻辑分析:
  • 使用 HTTP 接口提交 CSR,适用于自动化流程;
  • 需要 API 密钥认证;
  • 返回的响应中将包含签发的证书。

CSR 是构建数字证书体系的关键环节,掌握其生成、格式解析与验证流程,对于构建安全通信环境具有重要意义。下一章将深入讲解如何使用 openssl ca 命令签署 CSR,并完成证书签发的全过程。

6. 使用 openssl ca 命令签署CSR

在前几章中,我们已经学习了如何创建根CA、生成CSR以及配置 openssl.cnf 文件。本章将围绕 openssl ca 命令展开,深入讲解如何通过该命令签署证书签名请求(CSR),并管理签发后的证书。我们将从命令的基本结构、签署流程、后续管理操作到常见问题排错,逐步展开,帮助你掌握OpenSSL中证书签发的核心操作。

6.1 openssl ca 命令的基本用法

openssl ca 是OpenSSL中用于签署CSR的核心命令之一,常用于构建私有CA体系中的证书签发环节。

6.1.1 命令结构与常用参数说明

基本命令结构如下:

openssl ca [选项] -in CSR文件路径 -out 证书输出路径

常见参数说明如下:

参数 说明
-in CSR文件路径 指定待签署的CSR文件路径
-out 证书输出路径 指定生成的证书保存路径
-config 配置文件路径 指定使用的 openssl.cnf 配置文件(默认为系统默认配置)
-days N 设置证书有效期(天数)
-notext 不以文本形式输出证书内容(加快处理速度)
-batch 自动确认,避免交互式提示
-revoke 证书路径 吊销证书
-gencrl 生成CRL(证书吊销列表)

例如,签署一个CSR的命令如下:

openssl ca -config openssl.cnf -in server.csr -out server.crt -days 365 -batch

说明:使用 openssl.cnf 配置文件签署 server.csr ,生成有效期为365天的证书 server.crt ,并自动确认操作。

6.1.2 证书签发前的环境准备

在使用 openssl ca 前,必须确保以下条件满足:

  1. 根CA已创建 :需具备根CA的私钥和证书文件。
  2. 配置文件已配置 openssl.cnf 中的 [ca] 段需正确设置,如:
    ```ini
    [ ca ]
    default_ca = CA_default

[ CA_default ]
dir = ./demoCA
certs = $dir/certs
crl_dir = $dir/crl
database = $dir/index.txt
new_certs_dir = $dir/newcerts
certificate = $dir/cacert.pem
serial = $dir/serial
crl = $dir/crl.pem
private_key = $dir/private/cakey.pem
RANDFILE = $dir/private/.rand
`` 3. **目录结构初始化**:确保 demoCA 目录下存在以下文件/目录: - index.txt (用于记录已签发证书) - serial (证书序列号文件) - newcerts/ (存放新签发的证书) - private/`(存放CA私钥)

  1. CSR文件存在 :如前一章所述,CSR文件需已通过 openssl req 生成并验证。

完成上述准备后,即可使用 openssl ca 命令进行证书签发。

6.2 证书签署的完整流程

证书签发过程涉及多个步骤,包括加载CSR、应用配置策略、生成证书并输出。

6.2.1 加载CSR并应用配置策略

OpenSSL 会根据 openssl.cnf 中的 [policy] 段定义的策略,决定哪些字段是必须的或可选的。例如:

[ policy_strict ]
countryName = match
stateOrProvinceName = match
organizationName = match
organizationalUnitName = optional
commonName = supplied
emailAddress = optional

[ policy_loose ]
countryName = optional
stateOrProvinceName = optional
localityName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied
emailAddress = optional

当使用 -policy 参数指定策略时,OpenSSL 会校验CSR中对应字段是否符合要求。

示例命令:

openssl ca -config openssl.cnf -policy policy_loose -in server.csr -out server.crt -days 365 -batch

说明:使用宽松策略 policy_loose 签署证书。

6.2.2 证书生成与格式输出

成功签发后,证书将写入 server.crt ,默认格式为PEM(Base64编码)。你也可以通过以下命令查看证书内容:

openssl x509 -in server.crt -text -noout

输出示例:

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 123456789 (0x12d687)
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=CN, ST=Beijing, O=MyRootCA, CN=MyRootCA
        Validity
            Not Before: Apr  1 00:00:00 2025 GMT
            Not After : Apr  1 00:00:00 2026 GMT
        Subject: C=CN, ST=Shanghai, O=MyCompany, CN=www.mycompany.com

说明:展示了证书的版本、序列号、签名算法、颁发者、有效时间及主体信息。

证书生成后,会被记录到 index.txt 文件中,便于后续吊销和CRL管理。

6.3 证书签发后的管理操作

签发完成后,还需要对证书进行管理和维护,包括吊销、CRL更新、日志记录等。

6.3.1 证书吊销与CRL更新

如果某个证书需要吊销,可以使用以下命令:

openssl ca -config openssl.cnf -revoke server.crt

吊销后,需生成或更新CRL:

openssl ca -config openssl.cnf -gencrl -out crl.pem

你可以通过以下命令查看CRL内容:

openssl crl -in crl.pem -text -noout

6.3.2 签署日志与索引文件维护

每次签发或吊销证书时,OpenSSL 会更新 index.txt 文件,记录如下信息:

V   260401000000Z       01  unknown /C=CN/ST=Shanghai/O=MyCompany/CN=www.mycompany.com
R   260401000000Z   250401000000Z   02  unknown /C=CN/ST=Shanghai/O=MyCompany/CN=www.mycompany.com  Revoked

说明: V 表示有效证书, R 表示已吊销证书。

此外, serial 文件记录下一个证书的序列号,确保不重复。

6.4 常见问题与排错方法

在实际操作中,可能会遇到各种问题。以下是一些常见问题及解决方法。

6.4.1 签名失败的常见原因与解决方案

问题描述 原因 解决方案
unable to write 'random state' 无法写入随机状态文件 检查权限或使用 -rand 指定随机种子文件
TXT_DB error number 8 数据库冲突(重复的Subject) 修改 index.txt 或使用 -create_serial
error while loading CA private key 私钥密码错误或权限过高 检查密码或 chmod 600 cakey.pem
unsupported algorithm 算法不支持(如SM2) 使用支持该算法的OpenSSL版本或转换密钥

6.4.2 多环境下的兼容性处理技巧

在多平台或跨版本环境中,可能会出现兼容性问题,例如:

  • PEM与DER格式转换
    ```bash
    # PEM转DER
    openssl x509 -outform der -in server.crt -out server.der

# DER转PEM
openssl x509 -inform der -in server.der -out server.pem
```

  • 使用PKCS#7或PKCS#12打包证书
    bash # 打包为PKCS#12 openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt

  • 跨OpenSSL版本兼容性

  • 确保使用相同版本或向后兼容的特性
  • 对于国密算法(如SM2/SM3/SM4),需使用国密支持的OpenSSL分支(如 BoringSSL 或 Tongsuo)

(本章内容暂未总结,下一章将继续深入讲解如何构建中间CA体系)

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:OpenSSL 是广泛用于创建和管理数字证书的安全工具包。本文围绕 OpenSSL 的 openssl ca 命令,详细讲解如何使用相关文件完成证书请求(CSR)的签署过程。内容涵盖根CA的创建、配置文件设置、CSR生成与签署、证书安装等关键步骤,并解释了所需文件的作用和管理方式。通过本指南,读者可以掌握构建本地CA体系、签署证书的完整流程,提升在SSL/TLS安全通信中的实践能力。


本文还有配套的精品资源,点击获取
menu-r.4af5f7ec.gif

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值