Linux openssl 命令
OpenSSL 是一个强大的开源加密工具包,提供了各种加密算法、证书管理功能和 SSL/TLS 协议实现。它是 Linux 系统中处理加密任务的事实标准工具。
OpenSSL 主要功能包括:
- 创建和管理 SSL 证书
- 加密/解密文件
- 生成密钥对
- 测试 SSL 连接
- 计算哈希值
- 数字签名验证
基本语法
openssl 命令的基本语法格式为:
openssl command [command_options] [command_args]
其中:
command
:要执行的 OpenSSL 子命令(如 genrsa、req、x509 等)command_options
:子命令的选项参数command_args
:子命令的参数
常用子命令及示例
1. 生成 RSA 密钥对
生成 2048 位的 RSA 私钥:
openssl genrsa -out private.key 2048
从私钥提取公钥:
openssl rsa -in private.key -pubout -out public.key
参数说明:
-out
:指定输出文件2048
:密钥长度(位)-pubout
:输出公钥
2. 创建自签名证书
生成 CSR(证书签名请求):
openssl req -new -key private.key -out cert.csr
生成自签名证书(有效期365天):
openssl req -x509 -new -key private.key -days 365 -out cert.crt
参数说明:
-new
:创建新请求-key
:指定私钥文件-days
:证书有效期(天)-x509
:输出 X.509 格式证书
3. 文件加密与解密
使用 AES-256-CBC 加密文件:
openssl enc -aes-256-cbc -salt -in plaintext.txt -out encrypted.enc
解密文件:
openssl enc -d -aes-256-cbc -in encrypted.enc -out decrypted.txt
参数说明:
-aes-256-cbc
:使用 AES-256-CBC 算法-salt
:添加随机盐值增强安全性-in
:输入文件-out
:输出文件-d
:解密模式
4. 计算文件哈希值
计算 SHA-256 哈希:
openssl dgst -sha256 filename.txt
计算 MD5 哈希:
openssl dgst -md5 filename.txt
5. 测试 SSL 连接
测试远程服务器的 SSL 证书:
openssl s_client -connect example.com:443 -showcerts
参数说明:
-connect
:指定主机和端口-showcerts
:显示服务器证书链
高级用法
1. 创建 PKCS#12 格式证书
将证书和私钥打包为 PKCS#12 文件:
openssl pkcs12 -export -in cert.crt -inkey private.key -out cert.p12
2. 证书信息查看
查看证书详细信息:
openssl x509 -in cert.crt -text -noout
3. 验证证书链
验证证书链完整性:
openssl verify -CAfile ca.crt cert.crt
安全注意事项
- 密钥保护:私钥文件应设置适当权限(如 600),避免泄露
- 算法选择:避免使用不安全的算法(如 MD5、SHA1)
- 密码强度:加密时使用强密码
- 证书有效期:定期更新过期证书
- 随机数生成:确保系统有足够的熵用于加密操作
常见问题解答
Q1: 如何检查 OpenSSL 版本?
openssl version
Q2: 如何生成更安全的 ECC 密钥?
openssl ecparam -genkey -name secp384r1 -out ecc.key
Q3: 如何转换证书格式?
从 PEM 转换为 DER:
openssl x509 -in cert.pem -outform der -out cert.der
实践练习
- 生成一个 4096 位的 RSA 密钥对
- 创建一个有效期为 2 年的自签名证书
- 加密一个文本文件并使用相同密码解密
- 检查你常用网站的 SSL 证书信息
通过掌握 openssl 命令,你将能够处理各种加密和安全相关的任务,为系统安全和管理工作打下坚实基础。
点我分享笔记