OpenSSL 是广受欢迎的开源工具包,可让用户为网站实现 SSL/TLS 协议。无论你需要创建数字证书、检查 SSL 配置还是转换证书格式,OpenSSL 都提供保障通信安全的重要工具。
本指南提供常用 OpenSSL 命令的基本信息,包括 CSR 生成与证书管理指导。
最常用的 OpenSSL 命令
命令 1:生成文件哈希
openssl dgst -sha256 file.txt
命令 2:生成随机 AES-256 密钥
openssl rand -hex 32
命令 3:生成自签名证书
openssl req -x509 -newkey rsa:4096 -keyout private_key.pem -out certificate.pem -days 365
命令 4:生成带密码保护私钥的自签名证书
openssl req -x509 -newkey rsa:2048 -keyout private_key.pem -out certificate.pem -days 365 -passout pass:mysecretpassword
命令 5:生成带自定义主题的自签名证书
openssl req -x509 -newkey rsa:2048 -keyout private_key.pem -out certificate.pem -days 365 -subj "/C=IN/ST=Delhi/L=Delhi/O=IOPSHub/CN=iopshub.com"
命令 6:生成带 SAN 扩展的自签名证书
openssl req -x509 -newkey rsa:2048 -keyout private_key.pem -out certificate.pem -days 365 -subj "/CN=iopshub.com" -reqexts SAN -config <(printf "[req]\ndistinguished_name=dn\n[SAN]\nsubjectAltName=DNS:iopshub.com,DNS:www.iopshub.com\n[dn]\nCN=iopshub.com")
命令 7:生成新私钥
openssl genpkey -algorithm RSA -out private_key.pem -aes256
命令 8:从证书提取公钥
openssl x509 -in certificate.pem -pubkey -noout > public_key.pem
命令 9:用 AES-256 CBC 加密文件
openssl enc -aes-256-cbc -salt -in file.txt -out file.enc
命令 10:解密 AES-256 CBC 加密的文件
openssl enc -aes-256-cbc -d -in file.enc -out file.txt
如何检查 OpenSSL 版本?
openssl version -a
用 OpenSSL 生成 CSR
步骤 1:选择密钥生成方法(RSA 至少 2048 位,ECDSA 256 位)。步骤 2:生成安全私钥(RSA 推荐):
openssl genpkey -algorithm RSA -out private_key.pem -keyopt rsa_keygen_bits:2048
带密码加密(AES-256):
openssl genpkey -algorithm RSA -aes256 -out private_key.pem -keyopt rsa_keygen_bits:2048
ECDSA:
openssl ecparam -genkey -name prime256v1 -out ecdsa_private_key.pem
步骤 3:提取公钥(RSA):
openssl rsa -in private_key.pem -pubout -out public_key.pem
ECDSA:
openssl ec -in ecdsa_private_key.pem -pubout -out ecdsa_public_key.pem
步骤 4:发起 CSR 创建(RSA):
openssl req -new -key private_key.pem -out csr.pem
方法 1(-subj 配置):
openssl req -new -key private_key.pem -out csr.pem -subj "/C=US/ST=California/L=San Francisco/O=MyCompany/OU=IT/CN=example.com"
方法 2(一步生成私钥与 CSR,RSA):
openssl req -new -newkey rsa:2048 -nodes -keyout private_key.pem -out csr.pem
步骤 5:确认 CSR 数据:
openssl req -in csr.pem -noout -text
步骤 6:将 CSR 提交给 CA,注意确认 CA 支持你所用的密钥算法(RSA 或 ECDSA)。
用 OpenSSL 命令行查看与管理证书
步骤 1:查看证书数据:
openssl x509 -text -in yourdomain.crt -noout
openssl verify -CAfile ca_bundle.crt certificate.crt
步骤 2:验证密钥对:
openssl rsa -noout -modulus -in private_key.pem | openssl md5
openssl x509 -noout -modulus -in certificate.crt | openssl md5
若哈希匹配,则私钥与证书对应。密钥不匹配错误通常发生在证书安装在与生成 CSR 不同的机器上时。
OpenSSL 转换 SSL 证书格式的命令
转换 PEM 为 DER:
openssl x509 -inform PEM -in yourdomain.crt -outform DER -out yourdomain.der
openssl rsa -inform PEM -in yourdomain.key -outform DER -out yourdomain_key.der
转换 DER 为 PEM:
openssl x509 -inform DER -in yourdomain.der -outform PEM -out yourdomain.crt
openssl rsa -inform DER -in yourdomain_key.der -outform PEM -out yourdomain.key
转换 PFX 为 PEM:
openssl pkcs12 -in yourdomain.pfx -nocerts -out yourdomain.key -nodes
openssl pkcs12 -in yourdomain.pfx -nokeys -clcerts -out yourdomain.crt
结语
OpenSSL 是管理 SSL/TLS 加密的重要工具包,提供密钥生成、CSR 创建、证书管理与加密的广泛命令。无论是保护 Web 服务器还是验证证书真实性,掌握这些命令都将帮助你简化安全流程。建议向受信任的供应商购买 SSL 证书,并遵循强密钥、检查证书信息、更新 OpenSSL 等最佳实践,以有效保护系统免受威胁。