OpenSSL
提供了广泛的功能来处理加密
任务,从密钥管理
、证书生成
到加密数据
。掌握 OpenSSL
的使用,可以在安全和加密方面的工作中更有效地处理各种任务。
1. 查看 OpenSSL 版本
- 显示当前安装的 OpenSSL 版本
bash
openssl version
# OpenSSL 1.1.1 11 Sep 2018
2. 生成私钥
- 生成 2048 位的 RSA 私钥,并将其保存到 private.key 文件中
bash
openssl genpkey -algorithm RSA -out private.key -pkeyopt rsa_keygen_bits:2048
- 旧版本的 OpenSSL 使用 genrsa 生成私钥
bash
openssl genrsa -out private.key 2048
3. 生成公钥
- 从私钥中提取公钥
bash
openssl rsa -in private.key -pubout -out public.key
4. 创建 CSR(证书签名请求)
- 创建一个
CSR
文件,该文件通常用于申请SSL
证书。这个过程需要一个私钥文件 - 将会被提示输入信息,如国家、组织名等。也可以使用
-subj
参数来跳过这些提示
bash
openssl req -new -key private.key -out request.csr
5. 自签名证书
- 使用私钥和 CSR 创建一个自签名的证书。这个证书的有效期为 365 天
bash
openssl x509 -req -days 365 -in request.csr -signkey private.key -out certificate.crt
6. 查看证书内容
- 查看证书文件的详细信息
bash
openssl x509 -in certificate.crt -text -noout
- 显示私钥的详细信息
bash
openssl rsa -in private.key -text -noout
7. 转换证书格式
- 将
PEM
格式转换为DER
格式
bash
openssl x509 -in certificate.crt -outform der -out certificate.der
- 将
DER
格式转换为PEM
格式
bash
openssl x509 -in certificate.der -inform der -out certificate.crt
- 将
private.key
转换为PEM格式的private.pem
bash
openssl rsa -in private.key -out private.pem
8. 检查私钥内容
- 显示私钥文件的详细信息
bash
openssl rsa -in private.key -check
9. 检查 CSR 内容
- 查看 CSR 文件的详细信息
bash
openssl req -in request.csr -text -noout
10. 使用 OpenSSL 进行文件加密/解密
- 加密文件 : 使用对称加密(AES-256-CBC)加密文件 file.txt
bash
openssl enc -aes-256-cbc -salt -in file.txt -out file.enc
- 解密文件 : 解密文件 file.enc
bash
openssl enc -aes-256-cbc -d -in file.enc -out file.txt
11. 创建 PKCS#12 文件
- 将证书和私钥组合成一个 PKCS#12 文件
bash
openssl pkcs12 -export -out certificate.pfx -inkey private.key -in certificate.crt -certfile ca.crt
12. SSL/TLS 测试
- 使用 OpenSSL 连接到远程服务器以测试 SSL/TLS 连接
bash
openssl s_client -connect www.example.com:443
- 显示远程服务器的证书
bash
openssl s_client -connect www.example.com:443 -showcerts
13. 验证证书链
- 使用根证书验证服务器证书
bash
openssl verify -CAfile ca.crt certificate.crt
14. 生成 DH 参数
- 生成 Diffie-Hellman 参数,这些参数用于加强密钥交换过程的安全性
bash
openssl dhparam -out dhparam.pem 2048
15. 生成随机数
- 生成 32 字节的随机数(例如,用于密钥或 IV)
bash
openssl rand -hex 32
16. 数字签名和验证
- 创建一个SHA256哈希的数字签名
bash
openssl dgst -sha256 -sign private.key -out signature.sig data.txt
- 验证
data.txt
文件的数字签名
bash
openssl dgst -sha256 -verify public.key -signature signature.sig data.txt