OpenSSL命令行工具功能强大,涵盖了密钥、证书、加密、网络测试等多个方面。为方便查阅,我将其中核心功能和常用命令整理如下:
一、密钥管理
密钥是安全通信的基础,OpenSSL支持生成和管理多种算法密钥。
命令示例
主要功能
openssl genpkey -algorithm RSA -out privkey.pem
生成RSA私钥
openssl genpkey -algorithm RSA -out privkey.pem -aes-128-cbc -pass pass:hello
生成带密码的RSA私钥
openssl genrsa -out private.key 2048
生成2048位RSA私钥
openssl rsa -in private.key -pubout -out public.key
从私钥提取公钥
openssl rsa -in private.key -text -noout
以文本形式查看私钥信息
openssl rsa -in private.key -check
检查私钥的完整性和正确性
openssl pkey -in key.pem -text -noout
查看密钥详细信息(适用于多种密钥类型)
注意:为保障安全,建议RSA密钥长度至少为2048位
genrsa等旧命令在OpenSSL 3.0中已被genpkey取代
二、证书管理
涉及SSL证书申请(CSR)、签发、查看和格式转换。
命令示例
主要功能
openssl req -new -key privkey.pem -out cert.csr
创建证书签名请求(CSR)
openssl req -new -key privkey.pem -out cert.csr -subj "/C=CN/..."
无交互式提示创建CSR
openssl req -text -in cert.csr -noout -verify
查看并验证CSR内容
openssl x509 -req -in cert.csr -signkey privkey.pem -out cert.crt
使用私钥签发自签名证书
openssl x509 -in certificate.crt -text -noout
查看证书的详细信息(如有效期、颁发者等)
openssl verify -CAfile ca-bundle.crt cert.pem
验证证书链的有效性
openssl pkcs12 -export -out cert.pfx -inkey key.key -in cert.crt
将证书和密钥打包为PKCS#12(.pfx)格式
openssl pkcs12 -in cert.pfx -nocerts -out key.key -nodes
从PKCS#12文件中提取私钥
重要:使用自签名签发的证书通常不被系统信任,仅用于测试
生产环境应使用受信任的CA签发的SSL证书。
三、加密与解密
OpenSSL支持使用对称加密算法对文件或数据进行加密解密。
命令示例
主要功能
openssl enc -aes-256-cbc -salt -in plain.txt -out encrypted.enc
使用AES-256算法加密文件(会提示输入密码)
openssl enc -aes-256-cbc -d -in encrypted.enc -out decrypted.txt
解密AES-256加密的文件
openssl enc -aes-128-cbc -e -in plain.txt -out cipher.txt -k mypassword
使用密码加密文件
openssl enc -l
列出所有支持的对称加密算法-
注意:enc命令的ecb模式不够安全,应优先使用cbc、cfb、ofb或ctr模式-
使用-k参数直接在命令行中指定密码不够安全,应尽量避免。
四、摘要与签名
用于生成数据的指纹(摘要)、签名和验证。
命令示例
主要功能
openssl dgst -sha256 -out file.sha256 file.txt
计算文件的SHA-256摘要
openssl dgst -sha256 -sign privkey.pem -out signature.bin file.txt
使用私钥对文件内容签名
openssl pkeyutl -sign -in data.txt -inkey privkey.pem -out sig.bin
使用私钥签名
openssl pkeyutl -verify -in data.txt -sigfile sig.bin -inkey pubkey.pem -pubin
使用公钥验证签名
安全提示:MD5、SHA-1等旧算法已被证实存在弱点,在安全性要求高的场景中应使用SHA-256或更新算法
五、网络测试与诊断
模拟客户端或服务器,用于调试SSL证书连接。
命令示例
主要功能
openssl s_client -connect www.example.com:443
作为客户端连接到远程SSL服务,获取证书、协商的密码套件等信息
openssl s_server -key key.pem -cert cert.pem -accept 44330
在本地端口启动一个简易的SSL/TLS测试服务器(用于客户端测试)
openssl ciphers -v
列出当前OpenSSL支持的所有SSL/TLS密码套件
六、信息查询与辅助
获取OpenSSL本身及系统加密功能的信息。
命令示例
主要功能
openssl version -a
查看OpenSSL的详细版本和构建信息
openssl list -cipher-commands 或 -digest-commands 或 -public-key-algorithms
列出支持的加密算法、摘要算法或公钥算法
openssl rand -base64 32
生成32字节的随机Base64字符串
openssl speed
测试当前机器上各种加密算法的运算速度
七、获取更详细的帮助
每个OpenSSL子命令都有丰富的选项,使用以下方式可以获得最权威、最详细的参数说明:
bash
复制
下载
查看openssl程序整体的概览
openssl
help
查看特定子命令(如 req, x509, enc)的详细手册
man
openssl-req
man
openssl-x509
man openssl-enc
如果有特定的使用场景(例如配置HTTPS服务器、为代码签名、或搭建私有CA),我可以为你提供更具体的操作步骤和注意事项。