温馨提示×

Linux中OpenSSL命令大全

小樊
34
2025-12-08 17:05:56
栏目: 云计算

Linux OpenSSL 命令速查与实用示例

一 基础与环境

  • 检查版本与组件路径
    • 查看版本与构建信息:openssl version -a
    • 查看支持的算法/命令:openssl list -cipher-commandsopenssl list -message-digest-commandsopenssl list -public-key-algorithms
  • 安装与升级
    • Ubuntu/Debian:sudo apt update && sudo apt install openssl
    • CentOS/RHEL:sudo yum install openssl
    • Fedora:sudo dnf install openssl
    • Arch:sudo pacman -S openssl
  • 配置文件与引擎路径
    • 常见配置:/usr/local/ssl/openssl.cnf(源码安装时常见)
    • 引擎/模块目录:ENGINESDIRMODULESDIR(可用 version -a 查看)

二 密钥与证书管理

  • 生成私钥
    • RSA:openssl genrsa -out rsa_key.pem 2048
    • 通用私钥(推荐):openssl genpkey -algorithm RSA -out private.key [-aes256]
  • 提取公钥
    • openssl rsa -in private.key -pubout -out public.key
  • ECC 密钥
    • openssl ecparam -name secp256k1 -genkey -noout -out ecc_key.pem
    • openssl ec -in ecc_key.pem -pubout -out ecc_pub.pem
  • 生成 CSR
    • openssl req -new -sha256 -key private.key -out server.csr
  • 自签名证书
    • 一步生成:openssl req -x509 -newkey rsa:2048 -nodes -keyout server.key -out server.crt -days 3650
    • 用 CSR 签名:openssl x509 -req -in server.csr -signkey server.key -out server.crt -days 365
  • 查看与验证证书
    • 查看证书内容:openssl x509 -in server.crt -text -noout
    • 证书链验证:openssl verify -CAfile ca_cert.pem server.crt
  • 格式转换与打包
    • PEM ↔ DER:openssl x509 -in server.crt -outform DER -out server.der;反向 ... -inform DER -in server.der ...
    • PKCS#12(.pfx/.p12):openssl pkcs12 -export -out server.p12 -inkey server.key -in server.crt
    • 拆分 PKCS#12:仅证书 openssl pkcs12 -in server.p12 -out cert.pem -clcerts -nokeys;仅私钥 openssl pkcs12 -in server.p12 -out key.pem -nocerts -nodes
  • DH 参数
    • openssl dhparam -out dhparams.pem 2048

三 对称加密与文件处理

  • 文件加密/解密(对称)
    • 加密:openssl enc -aes-256-cbc -salt -in plain.txt -out cipher.bin -pass pass:YourPass
    • 解密:openssl enc -d -aes-256-cbc -in cipher.bin -out plain.txt -pass pass:YourPass
    • 列出可用算法:openssl enc -list -cipher-algorithms
  • 消息摘要与 HMAC
    • 哈希:openssl dgst -sha256 file.txt
    • HMAC:openssl dgst -sha256 -hmac "secret" message.txt
  • 随机数
    • Base64 随机:openssl rand -base64 32
    • 二进制随机文件:openssl rand -out rand.bin 1024
  • 数字签名与验签
    • 签名:openssl dgst -sha256 -sign private.key -out sig.bin message.txt
    • 验签(公钥):openssl dgst -sha256 -verify public.key -signature sig.bin message.txt
    • 验签(证书):openssl dgst -sha256 -verify <(openssl x509 -in server.crt -pubkey -noout) -signature sig.bin message.txt

四 TLS SSL 测试与调试

  • 连接测试与握手信息
    • 基础连接:openssl s_client -connect example.com:443
    • 指定证书/密钥:openssl s_client -connect example.com:443 -cert client.crt -key client.key
    • 仅握手不输入数据:-connect host:port -servername host -quiet
  • 本地测试服务器
    • 启动:openssl s_server -cert server.crt -key server.key -www
  • 证书链与有效期检查
    • 查看链与证书信息:openssl s_client -connect example.com:443 -showcerts
    • 校验证书:openssl verify -CAfile ca_cert.pem server.crt

五 实用组合与最佳实践

  • 生成可用 HTTPS 证书(开发/测试)
    • 生成私钥:openssl genpkey -algorithm RSA -out server.key -aes256
    • 生成自签名证书:openssl req -x509 -newkey rsa:2048 -nodes -keyout server.key -out server.crt -days 365 -subj "/CN=localhost"
  • 将私钥与证书打包为 PKCS#12
    • openssl pkcs12 -export -out server.p12 -inkey server.key -in server.crt
  • 从 PFX 提取证书和私钥
    • 证书:openssl pkcs12 -in server.p12 -out server.crt -clcerts -nokeys
    • 私钥:openssl pkcs12 -in server.p12 -out server.key -nocerts -nodes
  • 生成强 DH 参数并用于服务
    • openssl dhparam -out dhparams.pem 2048
  • 安全与合规建议
    • 优先使用 AES-256-GCM 等 AEAD 模式进行数据加密(示例命令为 CBC 模式,便于演示)
    • 私钥必须受口令保护(-aes256),权限设为 600
    • 证书有效期不宜过长(生产建议 ≤ 398 天),并启用自动续期(如 ACME)
    • 避免在生产使用 MD5/SHA1;优先 SHA-256 及以上
    • 注意版本差异(如 1.1.13.x 的算法/命令支持不同),必要时用 version -a 确认环境

0