openssl签发RSA证书
使用 OpenSSL 自签发根证书并签发 RSA 证书的过程可以分为以下几个步骤:
1. 生成自签名的根证书
首先,生成一个自签名的根证书。根证书是信任链的起点,用于签发其他证书。
1 | # 生成根证书的私钥 |
2. 生成服务器证书的私钥和 CSR
接下来,生成服务器证书的私钥和 CSR。
1 | # 生成服务器证书的私钥 |
3. 使用根证书签发服务器证书
使用根证书签发服务器证书。
1 | # 使用根证书签发服务器证书 |
4. 验证证书
可以使用以下命令验证生成的证书:
1 | # 验证根证书 |
5. 使用证书
现在,你可以将 server.crt 和 server.key 用于你的服务器配置中。例如,在 Nginx 或 Apache 中配置 HTTPS。
6. 可选:生成 PEM 格式的证书
有些应用程序可能需要 PEM 格式的证书和私钥。你可以将 CRT 和 KEY 文件转换为 PEM 格式:
1 | # 将 CRT 转换为 PEM |
7. 可选:生成 PFX 格式的证书
如果你需要将证书和私钥打包成 PFX 格式(通常用于 Windows 服务器),可以使用以下命令:
1 | openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt -certfile rootCA.crt |
总结
通过以上步骤,你可以使用 OpenSSL 自签发根证书并签发 RSA 证书。生成的证书可以用于各种需要 SSL/TLS 加密的场景。
openssl签发SM2证书
使用 OpenSSL 自签发根证书并签发 SM2 证书的具体步骤
1. 生成 SM2 私钥
可以使用:
1 | openssl genpkey -algorithm EC -out rootCA.key -pkeyopt ec_paramgen_curve:sm2 |
也可以使用 openssl ecparam 生成 SM2 私钥:
1 | openssl ecparam -genkey -name SM2 -out sm2_key.pem |
-name SM2:指定使用 SM2 椭圆曲线。-out sm2_key.pem:生成的私钥保存到sm2_key.pem文件中。
生成的 sm2_key.pem 是 PEM 格式的 SM2 私钥。
2. 生成自签名的根证书(SM2)
使用生成的 SM2 私钥创建自签名的根证书。
1 | # 生成根证书的 CSR(证书签名请求) |
-sigopt sm2_id=1234567812345678:指定 SM2 签名时的 ID(可选,默认值为1234567812345678)。
3. 生成服务器证书的私钥和 CSR(SM2)
同样使用 openssl ecparam 生成服务器证书的 SM2 私钥:
1 | # 生成服务器证书的 SM2 私钥 |
4. 使用根证书签发服务器证书
使用根证书签发服务器证书:
1 | # 使用根证书签发服务器证书 |
5. 验证证书
验证生成的证书,确保算法和参数正确:
1 | # 验证根证书 |
在输出中,检查以下内容:
- 公钥算法应为
id-ecPublicKey(即 ECC)。 - 曲线名称应为
SM2。 - 签名算法应为
sm2sig-with-sm3。
6. 使用证书
将生成的 server.crt 和 server.key 用于支持 SM2 算法的服务器或应用程序中。
7. 可选:生成 PEM 格式的证书
如果需要 PEM 格式的证书和私钥,可以使用以下命令:
1 | # 将 CRT 转换为 PEM |
8. 可选:生成 PFX 格式的证书
如果需要将证书和私钥打包成 PFX 格式,可以使用以下命令:
1 | openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt -certfile rootCA.crt |
为什么使用 openssl ecparam -genkey?
openssl ecparam -genkey 是生成椭圆曲线密钥对的传统方式,适用于 OpenSSL 1.1.1 及以上版本。它的优点是:
- 明确指定曲线:通过
-name SM2明确指定使用 SM2 曲线。 - 兼容性:生成的密钥可以直接用于签发证书。
不过,从 OpenSSL 3.0 开始,推荐使用 openssl genpkey 生成密钥,因为它更通用且支持更多算法。
总结
你提到的 openssl ecparam -genkey -name SM2 -out sm2_key.pem 是完全正确的,可以用于生成 SM2 私钥。结合上述步骤,你可以使用 OpenSSL 自签发根证书并签发 SM2 证书,确保根证书和服务器证书都使用 SM2 算法。