OpenSSL 1.1.1i 命令行实战:5个常用证书与密钥生成命令详解

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

常见错误处理

  1. 版本不匹配报错:

    # 确认实际调用的OpenSSL版本
    openssl version
    # 如果PATH中有多个版本,调整环境变量顺序
    
  2. 证书过期检查:

    openssl x509 -in cert.pem -noout -dates
    
  3. 测试HTTPS服务:

    openssl s_client -connect example.com:443 -showcerts
    

性能优化建议

  • 对于高并发场景,考虑使用ECDSA算法替代RSA:
    openssl ecparam -genkey -name prime256v1 -out ec_key.pem
    
  • 定期轮换密钥,建议每3-6个月生成新密钥对

这些命令已经帮助我在多个微服务项目中快速搭建测试环境。特别是在Docker容器内生成临时证书时, -subj 参数的非交互模式特别实用。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值