openssl 详解

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
相关推荐
爱喝水的鱼丶2 小时前
SAP-ABAP:S/4 HANA ABAP 新特性入门:与 ECC ABAP 的核心差异、架构优势与学习路径规划
运维·数据库·性能优化·sap·abap·hana·开发交流
鬼手点金8 小时前
nanoGPT/nanochat 能做出 DeepSeek/Qwen 这样的大模型吗?
服务器·前端·javascript·bug·openclaw
VidDown8 小时前
24fps 转 25fps 不只是改个数字:帧率转换、PAL/NTSC 与音频补偿
python·网络协议·音视频·视频编解码·视频
贵州诚鑫致达科技有限公司9 小时前
Linux的yum源怎么重启?源不是服务
linux·运维·服务器
小小测试开发9 小时前
安全评测得分 0.9556 掉到 0.3257,只改了 top_k 和 prompt_style 之外的题面比例
人工智能·安全·prompt
遇印记10 小时前
传输层,网络层
运维·服务器·网络·windows·学习
品牌常新10 小时前
景区巡逻机器人怎么选?派宝S5全地形守护解析
运维·人工智能·机器人
Elastic 中国社区官方博客10 小时前
一条 ES|QL 查询,涵盖365天的审计日志:在热数据和可搜索快照上执行相同的搜索
大数据·运维·服务器·elasticsearch·搜索引擎·全文检索
北京中科新远科技11 小时前
高速光模块上线验收实战:DOM、FEC、BER与端口计数器怎么一起看
服务器·网络·php