OpenSSL 1.1.1i 命令行实战:5个常用证书与密钥生成命令详解
在本地开发HTTPS服务或构建需要API签名的系统时,OpenSSL是开发者不可或缺的瑞士军刀。但很多人在完成安装后,面对这个功能庞大的工具集往往不知从何入手。本文将聚焦五个最实用的OpenSSL命令,通过可立即执行的示例,带你快速掌握密钥对生成、证书签发等核心操作。
1. 生成RSA密钥对
任何加密通信的起点都是密钥对的创建。以下命令生成2048位的RSA私钥:
openssl genrsa -out private_key.pem 2048
关键参数解析:
-
genrsa:指定生成RSA密钥 -
-out:定义输出文件路径 -
2048:密钥长度(单位:比特)
生成的
private_key.pem
文件包含PEM格式的私钥。要提取公钥,执行:
openssl rsa -in private_key.pem -pubout -out public_key.pem
注意:默认生成的私钥不加密。如需密码保护,添加
-aes256参数并设置密码短语。
2. 创建自签名证书
开发测试时,自签名证书能快速搭建HTTPS环境。这条命令一次性生成密钥和证书:
openssl req -x509 -newkey rsa:2048 -nodes -keyout server.key -out server.crt -days 365
参数说明:
-
req -x509:生成自签名证书 -
-nodes:不加密私钥 -
-days 365:证书有效期
执行后会交互式输入国家、组织等信息。要非交互式运行,添加
-subj
参数:
openssl req -x509 -newkey rsa:2048 -nodes -keyout server.key -out server.crt -days 365 -subj "/CN=localhost"
3. 生成证书签名请求(CSR)
向CA机构申请证书时,需要提交CSR文件。首先生成密钥:
openssl genrsa -out domain.key 2048
然后创建CSR:
openssl req -new -key domain.key -out domain.csr
典型交互信息示例:
| 字段 | 示例值 | 说明 |
|---|---|---|
| Country Name | CN | 国家代码(2字母) |
| Common Name | example.com | 证书绑定的域名 |
4. 转换证书格式
不同场景需要不同格式的证书。以下是常见转换操作:
PEM转DER:
openssl x509 -in certificate.pem -outform der -out certificate.der
PKCS#12打包(含私钥):
openssl pkcs12 -export -in certificate.crt -inkey private.key -out bundle.p12
提示:PKCS#12格式常用于Windows和Java环境,导出时会提示设置保护密码。
5. 验证与查看证书
检查CSR文件内容:
openssl req -in domain.csr -noout -text
查看证书详细信息:
openssl x509 -in certificate.crt -noout -text
验证证书链完整性:
openssl verify -CAfile root-ca.crt intermediate.crt domain.crt
实战技巧与排错
密钥加密最佳实践 :对生产环境的私钥使用强密码保护:
openssl genrsa -aes256 -passout pass:你的密码 -out secure_key.pem 2048
常见错误处理 :
-
版本不匹配报错:
# 确认实际调用的OpenSSL版本 openssl version # 如果PATH中有多个版本,调整环境变量顺序 -
证书过期检查:
openssl x509 -in cert.pem -noout -dates -
测试HTTPS服务:
openssl s_client -connect example.com:443 -showcerts
性能优化建议 :
-
对于高并发场景,考虑使用ECDSA算法替代RSA:
openssl ecparam -genkey -name prime256v1 -out ec_key.pem - 定期轮换密钥,建议每3-6个月生成新密钥对
这些命令已经帮助我在多个微服务项目中快速搭建测试环境。特别是在Docker容器内生成临时证书时,
-subj
参数的非交互模式特别实用。

1万+

被折叠的 条评论
为什么被折叠?



