openssl命令

openssl 命令 #

openssl是一个强大的加密工具包,提供了各种加密功能,包括创建和管理证书、密钥生成、加密/解密文件、计算哈希值等。它是 SSL/TLS 协议的开源实现,广泛用于安全通信和 PKI(公钥基础设施)。

语法 #

openssl 命令 [命令选项] [命令参数]

常用命令 #

证书操作 #

1. 生成私钥 #

# 生成2048位RSA私钥
openssl genrsa -out private.key 2048

# 生成带密码保护的私钥
openssl genrsa -aes256 -out private.key 2048

2. 从私钥创建证书签名请求(CSR) #

openssl req -new -key private.key -out request.csr

3. 自签名证书 #

openssl req -x509 -new -key private.key -out certificate.crt -days 365

4. 一步创建私钥和自签名证书 #

openssl req -x509 -newkey rsa:2048 -keyout private.key -out certificate.crt -days 365

5. 查看证书内容 #

openssl x509 -in certificate.crt -text -noout

6. 查看 CSR 内容 #

openssl req -in request.csr -text -noout

7. 验证证书 #

openssl verify -CAfile ca.crt certificate.crt

加密和解密 #

1. 使用密码加密文件 #

openssl enc -aes-256-cbc -salt -in plaintext.txt -out encrypted.bin

2. 解密文件 #

openssl enc -aes-256-cbc -d -in encrypted.bin -out decrypted.txt

3. 使用公钥加密 #

openssl rsautl -encrypt -pubin -inkey public.key -in plaintext.txt -out encrypted.bin

4. 使用私钥解密 #

openssl rsautl -decrypt -inkey private.key -in encrypted.bin -out decrypted.txt

哈希和消息摘要 #

1. 计算文件的 SHA-256 哈希值 #

openssl dgst -sha256 file.txt

2. 计算文件的 MD5 哈希值 #

openssl md5 file.txt

密钥转换 #

1. 从 PEM 格式转换为 DER 格式 #

openssl x509 -in cert.pem -outform DER -out cert.der

2. 从 DER 格式转换为 PEM 格式 #

openssl x509 -in cert.der -inform DER -outform PEM -out cert.pem

3. 提取公钥 #

openssl rsa -in private.key -pubout -out public.key

4. 转换 PKCS#12(.pfx/.p12)到 PEM #

openssl pkcs12 -in certificate.pfx -out certificate.pem -nodes

5. 转换 PEM 到 PKCS#12 #

openssl pkcs12 -export -out certificate.pfx -inkey private.key -in certificate.crt -certfile ca.crt

SSL/TLS 连接测试 #

1. 测试 SSL/TLS 连接 #

openssl s_client -connect example.com:443

2. 显示服务器证书 #

openssl s_client -connect example.com:443 -showcerts

3. 测试特定 TLS 版本 #

openssl s_client -connect example.com:443 -tls1_2

常见用法示例 #

1. 创建自签名 SSL 证书 #

# 生成私钥
openssl genrsa -out server.key 2048

# 创建自签名证书
openssl req -new -x509 -key server.key -out server.crt -days 365 -subj "/CN=example.com"

2. 创建 CA 和签发证书 #

# 创建CA私钥
openssl genrsa -out ca.key 4096

# 创建CA证书
openssl req -new -x509 -key ca.key -out ca.crt -days 3650 -subj "/CN=My CA"

# 创建服务器私钥
openssl genrsa -out server.key 2048

# 创建CSR
openssl req -new -key server.key -out server.csr -subj "/CN=example.com"

# 使用CA签发证书
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 365

3. 检查 SSL 证书信息 #

# 查看证书的详细信息
openssl x509 -in certificate.crt -text -noout

# 查看证书的过期日期
openssl x509 -in certificate.crt -noout -enddate

# 查看证书的主题
openssl x509 -in certificate.crt -noout -subject

4. 检查远程服务器的 SSL 证书 #

echo | openssl s_client -connect example.com:443 2>/dev/null | openssl x509 -noout -text

5. 生成随机密码 #

openssl rand -base64 12

注意事项 #

  • 私钥文件应妥善保管,避免未授权访问
  • 在生产环境中,应使用强密码保护私钥
  • 自签名证书不被浏览器信任,仅适用于测试环境或内部使用
  • 证书过期后需要更新或重新签发
  • 使用最新版本的 OpenSSL 以避免已知的安全漏洞
  • 在处理敏感信息时,确保使用足够强度的加密算法