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
目录
相关文章
|
10月前
|
安全 Linux 网络安全
ssh-server配置文件参数PermitRootLogin介绍
**PermitRootLogin** 是 SSH 服务(sshd)配置文件 /etc/ssh/sshd_config 中的一个参数,用于控制是否允许通过 SSH 直接以 root 用户身份 登录到服务器。这个设置是为了增强系统的安全性,特别是在远程访问和管理服务器时。
1844 0
|
网络协议 Linux 网络安全
如何用阿里云实现内网穿透?如何在外网访问家里内网设备?
使用NPS自建内网穿透服务器教程,带WEB管理
38355 12
|
6月前
|
监控 安全 Cloud Native
永不信任,始终验证:零信任架构入门
永不信任,始终验证:零信任架构入门
336 112
|
6月前
|
Java API 调度
告别阻塞:探索Java 21虚拟线程的威力
告别阻塞:探索Java 21虚拟线程的威力
380 116
|
6月前
|
存储 安全 Apache
StarRocks 4.0:基于 Apache Iceberg 的 Catalog 中心化访问控制
StarRocks 4.0 已正式发布!这一版本带来了多项关键升级。接下来,我们将以每周一篇的节奏,逐一解析 4.0 的核心新特性。 在多引擎协同访问同一数据湖的场景下,如何实现安全、统一且可审计的权限管理,是 Lakehouse 架构演进中的一项关键挑战。StarRocks 4.0 联合 Apache Iceberg,借助 REST Catalog 的统一治理能力与 JWT 身份认证、临时凭证机制(Vended Credential),为多引擎湖仓架构提供了一种全新的安全访问方式。
|
PyTorch 算法框架/工具
Jetson学习笔记(四):pth(torch模型文件)转trt(tensorrt引擎文件)实操
关于如何使用torch2trt工具将PyTorch模型转换为TensorRT引擎文件的实操指南。
890 1
Jetson学习笔记(四):pth(torch模型文件)转trt(tensorrt引擎文件)实操
|
12月前
|
安全 算法 Ubuntu
Linux(openssl)环境:编程控制让证书自签的技巧。
总结:在Linux环境中,OpenSSL是一个非常实用的工具,可以帮助我们轻松地生成自签名证书。通过上述三个简单步骤,即可为内部网络、测试环境或开发环境创建自签名证书。但在公共访问场景下,建议购买经过权威认证机构签发的证书,以避免安全警告。
587 13
|
安全 算法 应用服务中间件
SSL/TLS协议信息泄露漏洞(CVE-2016-2183)【原理扫描】
SSL/TLS协议信息泄露漏洞(CVE-2016-2183)【原理扫描】 【可验证】 详细描述TLS是安全传输层协议,用于在两个通信应用程序之间提供保密性和数据完整性。
12386 2