OpenSSL 是 Linux 系统中功能强大的密码学工具包,支持加密、证书管理、SSL/TLS 协议等核心功能。以下是 OpenSSL 在 Linux 中的典型应用场景及操作指南:
场景:快速加密文件(如 AES-256-CBC)
# 加密文件(会提示输入密码)
openssl enc -aes-256-cbc -salt -in plaintext.txt -out encrypted.dat
# 解密文件
openssl enc -d -aes-256-cbc -in encrypted.dat -out decrypted.txt
参数说明:
- -salt
增加安全性
- -aes-256-cbc
指定算法(可替换为 -des3
等)
生成密钥对:
# 生成 2048 位 RSA 私钥
openssl genpkey -algorithm RSA -out private.key -pkeyopt rsa_keygen_bits:2048
# 提取公钥
openssl rsa -pubout -in private.key -out public.key
加密/解密文件:
# 使用公钥加密
openssl pkeyutl -encrypt -in secret.txt -pubin -inkey public.key -out encrypted.dat
# 使用私钥解密
openssl pkeyutl -decrypt -in encrypted.dat -inkey private.key -out decrypted.txt
生成自签名证书:
# 生成私钥和 CSR(证书签名请求)
openssl req -newkey rsa:2048 -nodes -keyout server.key -out server.csr
# 自签名证书(测试用)
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
验证证书:
openssl x509 -in server.crt -text -noout # 查看证书详情
openssl verify server.crt # 验证证书链
# 计算 SHA-256 哈希
openssl dgst -sha256 file.txt
# HMAC 计算(密钥为 'mykey')
openssl dgst -sha256 -hmac 'mykey' file.txt
测试远程服务器 SSL 配置:
openssl s_client -connect example.com:443 -showcerts
创建本地 HTTPS 测试服务:
openssl s_server -cert server.crt -key server.key -www -port 8443
# 生成 32 字节随机数(Base64 编码)
openssl rand -base64 32
# 将证书和私钥打包为 .p12 文件
openssl pkcs12 -export -out bundle.p12 -inkey private.key -in server.crt
600
:
bash
chmod 600 private.key
-pass pass:123
),改用文件或环境变量。通过以上操作,OpenSSL 可满足 Linux 下大多数密码学需求。复杂场景(如国密算法)需结合 -engine
参数或专用工具。