OpenSSL crt key (生成一套用于TLS双向认证的证书密钥)

news/2025/2/22 6:25:52

TLS_0">OpenSSL—— TLS证书

TLS_2">问:如何生成一套TLS证书、密钥呢?

生成一套 TLS 证书,包括 根 CA 证书、服务器证书、客户端证书,可以使用 openssl 命令来完成。完整的步骤如下,包括根 CA、服务器证书和客户端证书的生成。


📌 1. 生成 CA 证书(根证书)

根 CA 证书用于签发服务器和客户端证书,确保它们可以互相验证身份。

# 生成 CA 私钥 (2048-bit)
openssl genrsa -out ca.key 2048

# 生成 CA 证书 (自签名,有效期 10 年)
openssl req -x509 -new -nodes -key ca.key -sha256 -days 3650 -out ca.crt \
    -subj "/C=CN/ST=Beijing/L=Beijing/O=MyCompany/OU=IT Department/CN=MyRootCA"

生成的文件:

  • ca.key → CA 私钥
  • ca.crt → CA 证书(用于签发其他证书)

📌 2. 生成服务器证书

服务器证书用于 TLS 服务器身份认证

🔹 2.1 生成服务器私钥

openssl genrsa -out server.key 2048

🔹 2.2 生成服务器 CSR(证书签名请求)

openssl req -new -key server.key -out server.csr \
    -subj "/C=CN/ST=Beijing/L=Beijing/O=MyCompany/OU=IT Department/CN=server.example.com"

🔹 2.3 使用 CA 证书签发服务器证书

openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial \
    -out server.crt -days 365 -sha256

生成的文件:

  • server.key → 服务器私钥
  • server.csr → 服务器证书签名请求
  • server.crt → 服务器证书(由 CA 签发)

📌 3. 生成客户端证书

客户端证书用于客户端认证

🔹 3.1 生成客户端私钥

openssl genrsa -out client.key 2048

🔹 3.2 生成客户端 CSR

openssl req -new -key client.key -out client.csr \
    -subj "/C=CN/ST=Beijing/L=Beijing/O=MyCompany/OU=IT Department/CN=client.example.com"

🔹 3.3 使用 CA 证书签发客户端证书

openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial \
    -out client.crt -days 365 -sha256

生成的文件:

  • client.key → 客户端私钥
  • client.csr → 客户端证书签名请求
  • client.crt → 客户端证书(由 CA 签发)

📌 4. 证书验证

🔹 4.1 验证服务器证书

openssl verify -CAfile ca.crt server.crt

如果成功,输出:

server.crt: OK

🔹 4.2 验证客户端证书

openssl verify -CAfile ca.crt client.crt

如果成功,输出:

client.crt: OK

📌 5. 证书使用

  • 服务器 需要 server.keyserver.crt 进行 TLS 连接,并且需要 ca.crt 验证客户端证书。
  • 客户端 需要 client.keyclient.crt 进行 TLS 连接,并且需要 ca.crt 验证服务器证书。

TLS__107">📌 6. 示例:使用 OpenSSL 进行双向 TLS 认证

🔹 服务器端

openssl s_server -accept 4059 -cert server.crt -key server.key -CAfile ca.crt -verify 1

🔹 客户端

openssl s_client -connect 127.0.0.1:4059 -cert client.crt -key client.key -CAfile ca.crt

📌 总结

证书/密钥作用
ca.key根 CA 私钥
ca.crt根 CA 证书,用于签发其他证书
server.key服务器私钥
server.crt服务器证书(CA 签发)
server.csr服务器证书签名请求
client.key客户端私钥
client.crt客户端证书(CA 签发)
client.csr客户端证书签名请求

该过程完整生成了一套 CA 证书、服务器证书、客户端证书,适用于 TLS 服务器与客户端双向认证

请添加图片描述


http://www.niftyadmin.cn/n/5861788.html

相关文章

Apache Flink架构深度解析:任务调度、算子数据同步与TaskSlot资源管理机制

Apache Flink是一个分布式流处理框架,其核心架构设计围绕有界与无界数据流的统一处理能力展开。以下从任务分配、算子数据同步、TaskManager与JobManager的TaskSlot机制三个维度展开详细分析: 一、任务分配机制 Flink的任务分配基于并行度(P…

HTTP 常见状态码技术解析(应用层)

引言 HTTP 状态码是服务器对客户端请求的标准化响应标识,属于应用层协议的核心机制。其采用三位数字编码,首位数字定义状态类别,后两位细化具体场景。 状态码不仅是服务端行为的声明,更是客户端处理响应的关键依据。本文将从协议规…

策略模式Spring框架下开发实例

策略类Spring框架下开发实例 先列出策略模式下需要那些类: 策略接口 (Strategy),定义所有策略类必须遵循的行为。 具体策略类(如 ConcreteStrategyA、ConcreteStrategyB),实现不同的算法或行为。 上下文类 (Context),…

(一)趣学设计模式 之 单例模式!

目录 一、啥是单例模式?二、为什么要用单例模式?三、单例模式怎么实现?1. 饿汉式:先下手为强! 😈2. 懒汉式:用的时候再创建! 😴3. 枚举:最简单最安全的单例&a…

leetcode刷题第十三天——二叉树Ⅲ

本次刷题顺序是按照卡尔的代码随想录中给出的顺序 翻转二叉树 226. 翻转二叉树 /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*//*总体思路就是,对于每一个结点&…

如何利用 Vue 的生命周期钩子进行初始化和清理操作?

一、初始化操作的核心钩子 1. created(选项式API) export default {data() {return { user: null };},created() {// 适合初始化数据、发起非DOM操作请求this.fetchUser();},methods: {async fetchUser() {const response await fetch(/api/user);thi…

什么容错性以及Spark Streaming如何保证容错性

一、容错性的定义 容错性是指一个系统在发生故障或崩溃时,能够继续运行并提供一定服务的能力。在网络或系统中,这通常涉及到物理组件损坏或软件失败时系统的持续运行能力。容错系统的关键特性包括负载平衡、集群、冗余、复制和故障转移等。 二、Spark …

win10把c盘docker虚拟硬盘映射迁移到别的磁盘

c盘空间本身就比较小、如果安装了docker服务后,安装的时候没选择其他硬盘,虚拟磁盘也在c盘会占用很大的空间,像我的就三十多个G,把它迁移到其他磁盘一下子节约几十G 1、先输入下面命令查看 docker 状态 wsl -l -v 2、如果没有停止…