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 等最佳实践,以有效保护系统免受威胁。