OpenSSL自签ECC算法私有证书链

简介: 本文介绍使用OpenSSL基于ECC算法(prime256v1)创建X.509v3格式的根CA与中间CA证书的完整流程,采用SHA256签名算法。涵盖私钥生成、配置文件编写、证书签发及验证步骤,并强调路径长度限制、算法安全性和私钥保护等关键注意事项,适用于构建符合IAM Roles Anywhere要求的可信证书体系。(238字符)

以下是使用 OpenSSL 创建 ECC 根 CA 和中间 CA 的步骤,(X.509v3、SHA256+ 签名算法):

1. 创建根 CA

步骤 1:生成根 CA 私钥(ECC 算法)

openssl ecparam -name prime256v1 -genkey -out root-ca.key

步骤 2:创建根 CA 配置文件 root-ca.cnf

[req]
distinguished_name = req_distinguished_name
req_extensions = v3_ca
prompt = no
[req_distinguished_name]
C = CN
ST = Beijing
L = Beijing
O = ExampleOrg
OU = ExampleDept
CN = Root CA
[v3_ca]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints = critical,CA:true,pathlen:1
keyUsage = critical,keyCertSign,cRLSign

步骤 3:生成根 CA 证书

openssl req -config root-ca.cnf \
    -key root-ca.key \
    -new -x509 -days 3650 -sha256 \
    -extensions v3_ca \
    -out root-ca.crt

2. 创建中间 CA

步骤 1:生成中间 CA 私钥(ECC 算法)

openssl ecparam -name prime256v1 -genkey -out intermediate-ca.key

步骤 2:创建中间 CA 配置文件 intermediate-ca.cnf

[req]
distinguished_name = req_distinguished_name
# req_extensions = v3_intermediate_ca
prompt = no
[req_distinguished_name]
C = CN
ST = Beijing
L = Beijing
O = ExampleOrg
OU = ExampleDept
CN = Intermediate CA
[v3_intermediate_ca]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints = critical,CA:true,pathlen:0
keyUsage = critical,keyCertSign,cRLSign

req_extensions 需要注释掉先

步骤 3:生成中间 CA 的证书签名请求(CSR)

openssl req -config intermediate-ca.cnf \
    -key intermediate-ca.key \
    -new -sha256 \
    -out intermediate-ca.csr

步骤 4:用根 CA 签名中间 CA 的 CSR

openssl x509 -req -days 1825 -in intermediate-ca.csr -CA root-ca.crt -CAkey root-ca.key -out intermediate-ca.crt -sha256 -CAcreateserial -extensions v3_intermediate_ca -extfile <(cat <<EOF
[v3_intermediate_ca]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints = critical,CA:true,pathlen:0
keyUsage = critical,digitalSignature,cRLSign,keyCertSign
EOF
)

验证证书

检查根 CA 证书

openssl x509 -text -noout -in root-ca.crt

关键验证点:

  • Signature Algorithm: ecdsa-with-SHA256
  • X509v3 extensions 包含:
  • Basic Constraints: CA:TRUE, pathlen:0
  • Key Usage: Certificate Sign, CRL Sign

检查中间 CA 证书

openssl x509 -text -noout -in intermediate-ca.crt

关键验证点:

  • Signature Algorithm: ecdsa-with-SHA256
  • X509v3 extensions 包含:
  • Basic Constraints: CA:TRUE, pathlen:0
  • Key Usage: Certificate Sign, CRL Sign

注意事项

  1. 路径长度 (pathlen:0):
    CA 的 pathlen:0 表示只能签发一层中间 CA。若需多级 CA,可调整此值(如 pathlen:1)。
  2. 签名算法:
    确保所有证书使用 SHA256 或更强算法(符合 IAM Roles Anywhere 的要求)。
  3. 存储安全:
    根 CA 私钥 (root-ca.key) 应严格保密,避免泄露。

后续步骤(如签发终端证书)

若需签发终端证书(用于 IAM Roles Anywhere 认证),可参考以下命令:

# 示例:中间CA生成终端证书 CSR(以 ECC 为例)
openssl ecparam -name prime256v1 -genkey -out demo-app.key
openssl req -new -key demo-app.key -out demo-app.csr -sha256
# 用中间 CA 签名终端证书(需配置中间 CA 的 OpenSSL 配置文件)
openssl x509 -req -days 90 -in demo-app.csr -CA intermediate-ca.crt -CAkey intermediate-ca.key -out demo-app-2.crt -sha256 -CAcreateserial -extensions v3_user -extfile <(cat <<EOF
[v3_user]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer
basicConstraints = critical, CA:false
keyUsage = critical, digitalSignature, keyEncipherment
extendedKeyUsage = clientAuth, serverAuth
EOF
)
# 示例:Root CA生成终端证书 CSR(以 ECC 为例)
openssl x509 -req -days 90 -in demo-app.csr -CA root-ca.crt -CAkey root-ca.key -out demo-app-from-root.crt -sha256 -CAcreateserial -extensions v3_user -extfile <(cat <<EOF
[v3_user]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer
basicConstraints = critical, CA:false
keyUsage = critical, digitalSignature, keyEncipherment
extendedKeyUsage = clientAuth, serverAuth
EOF
)

校验终端证书:

openssl verify -CAfile <(cat root-ca.crt intermediate-ca.crt) demo-app.crt
目录
相关文章
|
边缘计算 网络协议 网络架构
DoIP看这篇就够了,吐血整理
DoIP看这篇就够了,吐血整理
DoIP看这篇就够了,吐血整理
|
机器学习/深度学习 数据采集 安全
万字解析从根本解决大模型幻觉问题,附企业级实践解决方案
本文深入探讨大语言模型中的幻觉(Hallucination)问题,分析其成因、分类及企业级解决方案。内容涵盖幻觉的定义、典型表现与业务风险,解析其在预训练、微调、对齐与推理阶段的成因,并介绍RAG、幻觉检测技术及多模态验证工具。最后分享在客服、广告等场景的落地实践与效果,助力构建更可靠的大模型应用。
4005 0
|
PyTorch 算法框架/工具
Jetson学习笔记(四):pth(torch模型文件)转trt(tensorrt引擎文件)实操
关于如何使用torch2trt工具将PyTorch模型转换为TensorRT引擎文件的实操指南。
1052 1
Jetson学习笔记(四):pth(torch模型文件)转trt(tensorrt引擎文件)实操
|
网络协议 安全 Linux
Linux 防火墙解锁规则与 `firewall-cmd` 教程
【8月更文挑战第20天】
3144 0
|
缓存 应用服务中间件 网络安全
如何使用OCSP进行证书验证
如何使用OCSP进行证书验证
984 4
|
JSON API 数据安全/隐私保护
CURL 发送POST请求
CURL 发送POST请求
6130 0
|
安全 数据安全/隐私保护
在非对称加密中,公钥和私钥的生成过程是如何进行的?
【5月更文挑战第13天】在非对称加密中,公钥和私钥的生成过程是如何进行的?
1650 3
|
存储 芯片
STM32速成笔记(十一)—EEPROM(AT24C02)
本文详细介绍了什么是AT24C02,介绍了它的引脚,读/写时序,给出了应用实例和详细的程序设计。最后,简单介绍了AT24C02的应用场景。
3786 0
STM32速成笔记(十一)—EEPROM(AT24C02)

热门文章

最新文章