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

news/2025/2/22 6:22:21/

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.ppmy.cn/news/1574077.html

相关文章

网络安全钓鱼邮件测试 网络安全 钓鱼

🍅 点击文末小卡片 ,免费获取网络安全全套资料,资料在手,涨薪更快 如今,网络安全是一个备受关注的话题,“网络钓鱼”这个词也被广泛使用。 即使您对病毒、恶意软件或如何在线保护自己一无所知,您…

初等数论--乘法逆元

1. 简介 乘法逆元,相同于在模除法做像倒数一样的操作。 比如: 对于模 5 : 4 5: \quad4 5:4的逆元是什么 1 4 ≡ v ( m o d 5 ) \frac{1}{4} \equiv v ( \bmod\ 5) 41​≡v(mod 5) 也就是在模中除 4 4 4,相当于乘上一个什么样的数。 4 v ≡…

基于ffmpeg+openGL ES实现的视频编辑工具-字幕添加(六)

在视频编辑领域,字幕的添加是一项极为重要的功能,它能够极大地丰富视频内容,提升观众的观看体验。当我们深入探究如何实现这一功能时,FreeType 开源库成为了强大助力。本文将详细阐述借助 FreeType 库生成字幕数据的过程,以及如何实现字幕的缩放、移动、旋转、颜色修改、对…

设计心得——接口

一、接口 在编程者的口中,经常可以听到接口这个说法或者说概念,那什么是接口呢?如果在一些编程语言中,有接口这种定义的话,就非常好理解,比如Java,go等。但在C和C中根本没有接口这个定义的话,什…

20250221 NLP

1.向量和嵌入 https://zhuanlan.zhihu.com/p/634237861 encoder的输入就是向量,提前嵌入为向量 二.多模态文本嵌入向量过程 1.文本预处理 文本tokenizer之前需要预处理吗? 是的,文本tokenizer之前通常需要对文本进行预处理。预处理步骤可…

工业机器人中用于3D碰撞检测的算法库有哪些

在工业机器人领域,3D碰撞检测是确保安全运行和路径规划的关键技术。以下是常用的算法库及其特点,分类整理供参考: 一、开源算法库 FCL (Flexible Collision Library) 特点:专为机器人设计,支持刚体、复杂几何模型&…

【智慧工地可视化大屏用哪些系统来制作?】

智慧工地可视化大屏用哪些系统来制作? 1、FineReport (1)现阶段是中国市场份额第一的智慧工地可视化大屏系统,也是一款完善的数据分析工具。 (2)内嵌丰富多彩数据图表,不用编码启用&#xff…

懒人美食帮(springboot论文源码调试讲解)

第4章 系统设计 4.1系统设计原则 系统详细设计也是很重要的一步,设计的质量高低也决定了程序最终的质量,所以首先要进行系统的合理化详细设计,然后还有读懂理解透彻这个程序的设计规划,这样编写代码的时候才不会出现错误&#xf…