当前位置: 首页 > news >正文

OpenSSL详解

这里写目录标题

  • 选项:
      • **通用选项:**
      • 1. genrsa:生成RSA密钥对
      • 3. req:生成证书签名请求
      • 4. x509:生成自签名证书
    • **证书管理:**
      • 1. verify:验证证书
      • 2. x509:查看证书详情
      • 3. crl:生成证书吊销列表
    • **附加选项:**
      • 1. -out:指定输出文件名
      • 2. -in:指定输入文件名
      • 3. -days:指定证书有效期
    • **格式转换:**
      • 1. pkcs7:将证书和私钥打包成PKCS#7格式
      • 2. pkcs12:将证书和私钥打包成PKCS#12格式
    • 其他选项
      • 1. enc选项:
      • 2. s_client选项:
      • 3. s_server选项:
      • 4. cms选项:
      • 5. speed选项:
      • 6. s_time选项:
  • 使用案例:

openssl是一个开源的加密工具,可以用来生成证书、加密、解密等操作。以下列出了一些常用选项及使用案例:

选项:

通用选项:

1. genrsa:生成RSA密钥对

openssl genrsa -out private.key 2048
#生成一个2048位的RSA私钥,并将私钥保存为private.key。

3. req:生成证书签名请求

openssl req -new -key private.key -out request.csr
#使用私钥文件private.key生成一个新的证书签名请求,并将请求保存为request.csr文件。

4. x509:生成自签名证书

openssl req -x509 -key private.key -in request.csr -out certificate.crt -days 365
#使用私钥文件private.key和证书签名请求文件request.csr生成一个自签名的X.509证书,并将证书保存为certificate.crt文件,证书的有效期为365天。

证书管理:

1. verify:验证证书

openssl verify certificate.crt
#验证证书的有效性。通过输入证书文件的路径,openssl会检查证书是否能够通过验证。如果证书有效,会输出"certificate.crt: OK";如果证书无效或者无法验证,会输出相应的错误信息。

2. x509:查看证书详情

openssl x509 -in certificate.crt -text
#查看证书的详细信息。通过输入证书文件的路径和参数"-text",openssl会显示证书的公钥、颁发者、有效期、数字签名等详细信息。

3. crl:生成证书吊销列表

openssl ca -revoke revoked.crt -crl_reason keyCompromise -crl_reason superseded
生成证书吊销列表。通过输入被吊销的证书文件的路径和
#吊销原因,openssl会生成一个包含吊销证书信息的CRL文件。
#在生成CRL时可以指定吊销证书的原因,比如keyCompromise(密钥被泄露)或者superseded(证书被替换)。生成CRL后可以通过将其分发给相关方,以便他们在使用证书时检查证书的有效性

附加选项:

1. -out:指定输出文件名

2. -in:指定输入文件名

3. -days:指定证书有效期

格式转换:

1. pkcs7:将证书和私钥打包成PKCS#7格式

openssl crl2pkcs7 -nocrl -certfile certificate.crt -certfile ca.crt -out pkcs7.p7b
  • openssl crl2pkcs7: 这个命令将用于将证书和私钥打包成PKCS#7格式。
  • -nocrl: 这个选项表示不包含证书注销列表(CRL)。
  • -certfile certificate.crt -certfile ca.crt: 这里指定了要包含在PKCS#7文件中的证书文件,certificate.crt代表证书文件,ca.crt代表CA证书文件。
  • -out pkcs7.p7b: 这个选项表示输出的文件名为pkcs7.p7b

2. pkcs12:将证书和私钥打包成PKCS#12格式

openssl pkcs12 -export -in certificate.crt -inkey private.key -out pkcs12.p12
  • openssl pkcs12: 这个命令将用于将证书和私钥打包成PKCS#12格式。
  • -export: 这个选项表示要执行导出操作。
  • -in certificate.crt: 这里指定了要包含在PKCS#12文件中的证书文件,certificate.crt代表证书文件。
  • -inkey private.key: 这里指定了要包含在PKCS#12文件中的私钥文件,private.key代表私钥文件。
  • -out pkcs12.p12: 这个选项表示输出的文件名为pkcs12.p12

其他选项

1. enc选项:

openssl enc [options]
  • 示例:加密文件:openssl enc -aes-256-cbc -in plaintext.txt -out ciphertext.txt

2. s_client选项:

openssl s_client [options]
  • 示例:连接到SSL/TLS服务器并显示证书信息:openssl s_client -connect www.example.com:443

3. s_server选项:

openssl s_server [options]
  • 示例:创建一个SSL/TLS服务器:openssl s_server -key server.key -cert server.crt

4. cms选项:

openssl cms [options]
  • 示例:处理CMS格式的文件:openssl cms -verify -in signed.cms -inform DER -content data.txt -binary

5. speed选项:

openssl speed [options]
  • 示例:测试AES加密算法的性能:openssl speed -evp aes-256-cbc

6. s_time选项:

openssl s_time [options]
  • 示例:测试SSL/TLS服务器的性能:openssl s_time -connect www.example.com:443

使用案例:

  1. 生成RSA密钥对:
openssl genrsa -out private.key 2048
  1. 生成证书签名请求:
openssl req -new -key private.key -out csr.csr
  1. 生成自签名证书:
openssl req -x509 -newkey rsa:2048 -keyout private.key -out certificate.crt -days 365
  1. 加密文件:
openssl enc -aes-256-cbc -in plaintext.txt -out encrypted.txt
  1. 解密文件:
openssl enc -d -aes-256-cbc -in encrypted.txt -out decrypted.txt
  1. 连接SSL/TLS服务器并显示相关信息:
openssl s_client -connect example.com:443
  1. 创建SSL/TLS服务器:
openssl s_server -cert certificate.crt -key private.key -accept 443
  1. 计算消息的哈希值:
openssl dgst -sha256 file.txt
  1. 将证书和私钥存储在PKCS#12格式的文件中:
openssl pkcs12 -export -in certificate.crt -inkey private.key -out certificate.p12

以上是一些常用的openssl命令选项和使用案例,更多选项和用法可以通过查阅openssl的官方文档来了解。

http://www.xdnf.cn/news/601183.html

相关文章:

  • 【数据架构06】可信数据空间架构篇
  • MySQL 8.0 OCP 1Z0-908 题目解析(13)
  • MySQL 8.0 OCP 英文题库解析(八)
  • MySQL 8.0 OCP 1Z0-908 题目解析(12)
  • debian搭建ceph记录(接入libvirt)
  • 打破双亲委派模型的实践:JDBC与Tomcat的深度解析
  • RISC-V 开发板 MUSE Pi Pro OpenCV结合Gstreamer实时显示CSI摄像头
  • 03 基于 java udp 做一个dns服务器 和 一个dns代理服务器
  • Android Raspberry 请求 api 失败 iOS 请求成功【ssl 证书配置问题】
  • Android计算机网络学习总结
  • 【KWDB 创作者计划】_玩转数据库——纯硬核的工业级KWDB数据库产品评测报告(附测试代码)
  • Linux火墙管理及优化
  • 力扣-将x减到0的最小操作数
  • 【Hadoop】大数据技术之 HDFS
  • 对接钉钉消息样例:DING消息、机器人
  • vue3前端开发过程中,解决跨域
  • 如何管理固定资产
  • w~大模型~合集4
  • JAVA05基本数据类型和包装类的转换,转换成其他数据类型,包装类与字符串的转换+学生类的定义实例
  • [数据集]无人机视角检测分割数据集合集
  • 内容中台智能推荐系统实践路径
  • 智慧交通解决了哪些行业难点?
  • 算法轻量化与跨平台迁移:AI边缘计算的核心突破
  • sglang是如何运行?
  • 为什么抗干扰天线不能做RTK差分(三)“既要又要”的抗干扰天线
  • C#串口打印机:控制类开发与实战
  • 游戏引擎学习第307天:排序组可视化
  • 通过对音频信号提取梅尔频谱图并转换为对数梅尔频谱图得到的。它的形状主要由以下参数决定 转换成图片 64*64像素
  • opencv 图像的平移和旋转
  • 服务器异常数据问题解决 工具(tcpdump+wireshark+iptables)