Linux中OpenSSL命令大全
导读:Linux OpenSSL 命令速查与实用示例 一 基础与环境 检查版本与组件路径 查看版本与构建信息:openssl version -a 查看支持的算法/命令:openssl list -cipher-commands、openss...
Linux OpenSSL 命令速查与实用示例
一 基础与环境
- 检查版本与组件路径
- 查看版本与构建信息:
openssl version -a - 查看支持的算法/命令:
openssl list -cipher-commands、openssl list -message-digest-commands、openssl 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
- Ubuntu/Debian:
- 配置文件与引擎路径
- 常见配置:
/usr/local/ssl/openssl.cnf(源码安装时常见) - 引擎/模块目录:
ENGINESDIR、MODULESDIR(可用version -a查看)
- 常见配置:
二 密钥与证书管理
- 生成私钥
- RSA:
openssl genrsa -out rsa_key.pem 2048 - 通用私钥(推荐):
openssl genpkey -algorithm RSA -out private.key [-aes256]
- RSA:
- 提取公钥
openssl rsa -in private.key -pubout -out public.key
- ECC 密钥
openssl ecparam -name secp256k1 -genkey -noout -out ecc_key.pemopenssl 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
- PEM ↔ DER:
- 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
- Base64 随机:
- 数字签名与验签
- 签名:
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.1 与 3.x 的算法/命令支持不同),必要时用
version -a确认环境
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux中OpenSSL命令大全
本文地址: https://pptw.com/jishu/766651.html
