openssl命令x509证书操作详解


write in front
大家好,我是N阶二进制.希望你看完之后,能对你有所帮助,不足请指正!共同学习交流.
本文由N阶二进制原创 CSDN首发 如需转载还请通知⚠️
个人主页:N阶二进制—CSDN博客
欢迎各位→点赞 + 收藏⭐️ + 留言​
系列专栏:N阶二进制的openssl学习系列专栏——CSDN博客


OpenSSL 是一个开源的加密和解密工具,它提供了一系列命令来操作证书和密钥。以下是一些常用的 OpenSSL 命令,用于操作证书的详细解释:

文章目录

  • 一、生成自签名证书
  • 二、 生成证书请求(CSR)
  • 三、 查看证书信息
  • 四、将证书转换为不同格式
    • 4.1 der转换为 PEM 格式
    • 4.2 PEM 转换为 DER 格式
  • 五、知识总结
    • 5.1 自签名证书和根证书有什么区别
      • 5.1.1. 自签名证书(Self-Signed Certificate)
      • 5.1.2. 根证书(Root Certificate)
    • 5.2 PEM 格式和DER 格式区别
      • 5.2.1 PEM 格式
      • 5.2.2 DER 格式

一、生成自签名证书

生成自签名证书是指在没有经过任何第三方证书颁发机构(CA,Certificate Authority)的认证下,由个人或组织自行创建和签名的数字证书。自签名证书可以用于安全通信,但在实际应用中,它们通常用于测试、开发和内部使用,而不是在公共网络中使用,因为它们没有受到可信任 CA 的验证,可能会引发安全问题。

在使用自签名证书时,虽然可以加密通信,但客户端在连接时通常会受到浏览器或应用程序的警告,因为自签名证书没有被受信任的 CA 颁发。这样的警告可能导致用户对网站或应用程序的信任度下降。

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365
  • req:表示证书请求命令。
  • -x509:表示生成自签名证书。
  • -newkey rsa:4096:表示生成一个 RSA 密钥,长度为 4096 位。
  • -keyout key.pem:指定私钥输出文件名。
  • -out cert.pem:指定证书输出文件名。
  • -days 365:证书有效期为 365 天。

二、 生成证书请求(CSR)

证书请求(Certificate Signing Request,CSR)是一个数据文件,它包含了在申请数字证书时,证书请求者(通常是服务器管理员或网站所有者)向证书颁发机构(CA,Certificate Authority)提供的信息。CSR 包含了以下重要信息:

  1. 公钥(Public Key): CSR 包含了用于加密和解密通信的公钥。证书颁发机构会使用这个公钥创建数字证书,而与之配对的私钥则由证书请求者保密,用于解密加密的数据。

  2. 组织信息(Organization Information): CSR 包含了证书请求者的组织信息,包括组织名称、组织单位、城市、州/省、国家等。这些信息将出现在最终签发的数字证书中。

  3. 公钥算法(Public Key Algorithm): CSR 中会指定使用的公钥加密算法,常见的包括 RSA、ECDSA 等。

  4. 证书用途(Certificate Purpose): CSR 中可以指定证书的用途,例如加密通信、数字签名等。

  5. 主题备用名称(Subject Alternative Name,SAN): SAN 允许证书请求者指定多个域名或主机名,这在多域名证书或通配符证书的申请中非常有用。

  6. 数字签名(Digital Signature): CSR 包含了证书请求者使用其私钥对 CSR 数据进行签名的数字签名。这个签名用于证明 CSR 的完整性,确保在传输过程中没有被篡改。

在向 CA 提交 CSR 后,CA 将使用 CSR 中的公钥信息创建数字证书,并将该证书返回给证书请求者。证书请求者随后可以将这个证书用于加密通信、建立安全连接等目的。CSR 通常是由服务器软件(如Apache、Nginx)的管理员生成,并在购买 SSL/TLS 证书时提供给 CA。

openssl req -newkey rsa:2048 -keyout key.pem -out req.pem
  • req:表示证书请求命令。
  • -newkey rsa:2048:表示生成一个 RSA 密钥,长度为 2048 位。
  • -keyout key.pem:指定私钥输出文件名。
  • -out req.pem:指定证书请求输出文件名。

三、 查看证书信息

openssl x509 -in cert.pem -text -noout
  • x509:表示操作 X.509 证书。
  • -in cert.pem:指定要查看的证书文件。
  • -text:以文本形式显示证书信息。
  • -noout:不输出证书本身,只输出证书信息。

四、将证书转换为不同格式

4.1 der转换为 PEM 格式

openssl x509 -in cert.der -outform PEM -out cert.pem
  • -in cert.der:指定输入的 DER 格式证书文件。
  • -outform PEM:指定输出格式为 PEM。
  • -out cert.pem:指定输出的 PEM 格式证书文件。

4.2 PEM 转换为 DER 格式

openssl x509 -in cert.pem -outform DER -out cert.der
  • -in cert.pem:指定输入的 PEM 格式证书文件。
  • -outform DER:指定输出格式为 DER。
  • -out cert.der:指定输出的 DER 格式证书文件。

这些命令涵盖了使用 OpenSSL 创建、查看和转换证书的基本操作。在实际使用中,你可以根据需要使用这些命令,并根据具体的场景进行调整。

五、知识总结

5.1 自签名证书和根证书有什么区别

根证书(Root Certificate)就是自签名证书,不过签发机构不同,他有就有区别,它们之间有以下区别:

5.1.1. 自签名证书(Self-Signed Certificate)

  • 颁发者和使用者是同一个实体: 自签名证书是由实际使用该证书的实体(通常是个人、组织或设备)自行创建和签名的证书。颁发者和使用者是同一个实体,没有第三方 CA 参与。

  • 信任度较低: 自签名证书在公共网络中信任度较低,因为它们没有受到受信任的第三方 CA 的验证。当客户端连接到使用自签名证书的服务时,通常会收到安全警告,用户需要手动确认是否信任该证书。

  • 用途有限: 自签名证书通常用于内部测试、开发环境或局域网中,而不是在公共网络中使用。它们提供了加密通信的能力,但没有得到广泛信任。

5.1.2. 根证书(Root Certificate)

  • 由受信任的 CA 颁发: 根证书是由受信任的证书颁发机构(CA)签名并颁发的证书。CA 是一个受信任的实体,它通过验证证书请求者的身份,并签发数字证书。根证书是 CA 的根证书,它本身是自签名证书。

  • 信任度高: 根证书由操作系统、浏览器等软件内置,因此被广泛信任。当使用者收到由受信任 CA 签发的证书时,不会收到安全警告,因为这些证书是受信任的。

  • 广泛用于公共网络: 根证书和由它签发的中间证书(Intermediate Certificate)通常用于公共网络中,例如用于加密网站的 HTTPS 通信。这些证书能够建立安全的、受信任的通信连接。

总之,自签名证书是由使用者自行创建的证书,信任度较低,用途有限;而根证书是由受信任的 CA 签发的证书,信任度高,广泛用于公共网络中,确保了通信的安全性和可信度。

5.2 PEM 格式和DER 格式区别

PEM(Privacy-Enhanced Mail)格式和DER(Distinguished Encoding Rules)格式是两种常见的编码格式,用于表示证书、密钥和其他数据。它们之间的主要区别在于编码的方式和文件的扩展名。

5.2.1 PEM 格式

  • 编码方式: PEM 格式使用 Base64 编码将二进制数据转换为文本形式,并在数据开始和结束部分加上标头和尾部,以及可能的附加信息(如"BEGIN CERTIFICATE"和"END CERTIFICATE")。

  • 文件扩展名: PEM 格式的文件通常以 .pem.crt.cer.key 结尾。

  • 可读性: 由于使用 Base64 编码,PEM 格式的文件是文本文件,可以被文本编辑器打开查看,也可以在终端中输出查看内容。

  • 支持的数据类型: PEM 格式可以用来表示证书(包括 X.509 证书)、私钥、公钥等。

  • 示例:

-----BEGIN CERTIFICATE-----
MIIDujCCAqKgAwIBAgIJAIy5SKhfUEzaMA0GCSqGSIb3DQEBCwUAMHgxCzAJBgNV
...
KdhHdX5HkPLKkwrEBVRa9UW4dxAjUzpPjV4rxLz03R99NZPH8Q==
-----END CERTIFICATE-----

5.2.2 DER 格式

  • 编码方式: DER 格式使用二进制编码,将数据以二进制形式保存,不经过 Base64 编码。

  • 文件扩展名: DER 格式的文件通常以 .der.cer 结尾。

  • 可读性: DER 格式的文件是二进制文件,不可读,需要专用的工具或编程语言解析。

  • 支持的数据类型: DER 格式同样可以用来表示证书、私钥、公钥等。

  • 示例(无法显示,因为是二进制数据):

DER 格式没有示例文本,因为它是二进制编码的数据。

  • 区别总结:

    • 编码方式: PEM 使用 Base64 编码,DER 使用二进制编码。

    • 文件扩展名: PEM 格式通常以 .pem.crt.cer.key 结尾,DER 格式通常以 .der.cer 结尾。

    • 可读性: PEM 格式是文本文件,可以被文本编辑器打开查看,而 DER 格式是二进制文件,不可读。

在实际使用中,PEM 格式常用于人可读的配置文件,而 DER 格式通常用于机器间的数据交换,因为它更紧凑且不需要进行 Base64 编码解码。

你可能感兴趣的:(#,openssl命令,https,ssl,网络协议,linux,密码学,网络安全,c++)