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

如何通过OpenSSL来创建自签名的CA证书?

通过创建自签名CA证书可以让我们在没有商业支持的情况下学习与研究PKI(公钥基础设施)和SSL/TLS技术,本文将详细介绍如何通过OpenSSL来创建自签名的CA证书。

1. 初衷:为什么需要创建自签名CA证书?

除了开篇引言中提到的学习研究用途外,自签名证书也常见于以下三种场景:

  • 开发和测试环境:这类环境通常不需要使用全球公认的第三方CA证书,创建自签名CA证书就可以避免依赖外部CA,简化证书管理流程,并且可以快速生成和测试证书。

  • 企业内部网络:自签名CA证书可以用于验证内部设备的身份,确保数据传输的安全性。例如,在VPN网关、服务器和客户端之间建立安全连接时,使用自签名CA证书可以有效防止中间人攻击。

  • 小型企业/个人项目:对于一些小型企业或个人项目,购买第三方CA证书可能成本较高。在这种情况下,创建自签名CA证书可以节省费用,同时满足基本的安全需求。

2. 准备工作

首先确保系统上已安装了 OpenSSL。大多数现代 Linux 发行版都已经预装了 OpenSSL。可以通过命令openssl version来确认是否已经安装了OpenSSL。

查看版本

如果没有安装,可以通过包管理器进行安装。

  • Debian/Ubuntu: sudo apt-get install openssl
  • CentOS/RHEL: sudo yum install openssl

3. 具体步骤

使用OpenSSL创建自签名证书的可分为两大步,具体如下。

3.1. 生成CA私钥

使用openssl genpkey命令生成RSA算法的私钥文件。例如,可以使用以下命令生成一个密钥长度为2048 位的RSA私钥,并将其保存为ca_private.key文件。

openssl genpkey -algorithm RSA -out ca_private.key

这个私钥会用于后续的证书签名。当然以上命令中也可以使用ECC算法。实现相同的安全级别所需的RSA和ECC密钥长度如下表所示,可见ECC密钥更短。然而,ECC主要用于密钥交换和数字签名的管理,而不是加密。

RSA VS ECC

3.2. 使用生成的CA私钥创建CA证书

使用openssl req -x509命令来生成证书,并设置有效期为3650天,同时指定主题信息(如CN、O等)。命令如下:

openssl req -new -x509 -key ca_private.key -out ca_certificate.crt -days 3650 -subj "/C=CN/CN=FullStackSecurity/O=FSS/L=HZ/ST=ZheJiang"

这个命令会生成一个有效期为十年的自签名证书ca_certificate.crt,证书为PEM格式。

生成CA证书ca_certificate.crt

具体命令参数说明如下:

  • openssl req: OpenSSL用于处理证书签名请求(CSR,certificate signing request)的命令。
  • new: 表示创建新的CSR。
  • x509: 表示生成X.509格式的证书。
  • days 3650: 表示证书的有效期为10年。
  • key ca_private.key: 设置生成证书的私钥文件为 ca_private.key。
  • **subj “/C=CN/CN=FullStackSecurity/O=FSS/L=HZ/ST=ZheJiang” **: 用于设置证书主题信息,主要字段含义‌如下:
    • Country ©‌:个体所在地的国家代码。
    • Common Name (CN)‌:通常是个体的名称或主机名。
    • Organization (O)‌:个体所属的组织。
    • Locality (L)‌:个体所在地的城市或地理位置。
    • State (ST)‌:个体所在地的州或省份。

执行命令openssl x509 -in ca_certificate.crt -text -noout查看证书详情。

CA证书详情

从上图我们可以看出X509v3 Subject Key IdentifierX509v3 Authority Key Identifier的值是相同的,前者是此证书的唯一编号,后者是签发此证书的证书的唯一编号,再结合 X509v3 Basic Constraints 的 CA:TRUE 字样,可以判定出当前证书是一个自签名的CA根证书。

现在,由此证书签名的任何证书都将具有相同的颁发者详细信息。

Issuer: C=CN, CN=FullStackSecurity, O=FSS, L=HZ, ST=ZheJiang

4. 安装CA证书

计算机将根据其内部的信任存储(通常是操作系统或浏览器内置的受信任证书列表)来判断证书是否来自一个可信赖的来源。只有当证书链中的所有证书都被认为是可信的,并且最终指向了一个本地信任存储中的根证书时,整个证书链才会被认为可信。

系统预置的根证书

如果想让上面创建的CA证书以及后续用此证书颁发其他数字证书都被计算机信任,我们需要将此CA根证书安装到信任列表中。比如在MAC电脑上直接双击即可完成安装。

添加系统信任

从上图中可以看到,上面生成的CA根证书已经安装到了系统中。此后由该CA根证书颁发的其他证书均会被系统信任。

5. 写在最后

本文主要介绍了如何利用OpenSSL生成自签名的CA根证书,接下来博主会继续发文介绍:

  • 如何利用该根证书签署其他证书(即子证书),包括服务器证书和其他类型的证书;
  • 介绍客户端验证整个证书链的详细过程。


http://www.kler.cn/a/407565.html

相关文章:

  • 蓝桥杯每日真题 - 第22天
  • 递归------深度优先搜索
  • 表格数据处理中大语言模型的微调优化策略研究
  • 实验四:构建园区网(OSPF 动态路由)
  • libphone desktop编译
  • 前端速通(JavaScript)
  • 软件测试面试之常规问题
  • Vue3响应式原理
  • 线程(三)【线程互斥(下)】
  • 数据结构(初阶6)---二叉树(遍历——递归的艺术)(详解)
  • FIFO架构专题-异步FIFO及信号
  • cookie反爬----普通服务器,阿里系
  • python FastAPI 后台运行
  • git 构建分布式版本控制系统
  • https证书集成到java中
  • C++注释
  • VScode 连不上远程云服务器
  • 通过端口测试验证网络安全策略
  • 开源项目Screenshot-to-Code:截图图片生成代码
  • 大数据-229 离线数仓 - ODS层的构建 Hive处理 JSON 数据处理 结构化
  • Vue3 + Vite 项目引入 postcss + tailwindcss
  • C0029.在Clion中解决Debug时,提示Process finished with exit code -1的错误
  • Altium Designer学习笔记 6-10 异性元件库创建_原理图绘制
  • 【网络安全设备系列】4、漏洞扫描设备
  • 【Git】:Git基本操作
  • QT 关于QTableView的应用和管理