SSL 证书格式和证书文件扩展名:完整指南

embedded/2025/1/11 17:15:37/

SSL 证书是什么以及它如何工作相当容易理解。但当涉及到在服务器上安装它时,有时,你可能觉得这是在处理火箭科学。

由于有如此多的SSL 证书格式与特定服务器要求相关,您更有可能感到困惑和沮丧,而不是从一开始就正确配置证书。但这种情况即将改变。

在此综合指南中,我们将剖析每种SSL 证书格式和证书文件扩展名,并向您展示两种如何转换不同文件类型的方法。

证书文件格式 – 基础知识

让我们从基础知识开始。所有 SSL 证书都是x.509 证书。这是用一种称为抽象语法表示法一的形式语言表达的公钥证书的标准格式。我们不会进一步深入研究 X.509 结构;我们在这里讨论 SSL 证书格式,例如 DER、PEM、PKCS#7 和 PKCS#12。

区分它们的一个简单的方法是看它们的编码。

PEM和PKCS#7使用 Base ASCII(美国信息交换标准代码)编码。这是包含文本的文件的流行标准。

DER和PKCS#12使用二进制编码,即仅由零和一组成的以 2 为基数的数字系统。

由于格式和编码不同,SSL证书有许多文件扩展名。

SSL 证书格式和文件扩展名

让我们仔细检查每种格式及其 SSL 证书文件扩展名。您将发现每个首字母缩略词背后的含义以及哪个系统最常使用它。

DER 格式

DER代表可分辨编码规则,是一种二进制编码格式,在 Windows 之外很少使用。它包含在 .der 或 .cer 文件中。

PEM 格式

PEM是最流行的 SSL 证书格式,也是您最有可能遇到的格式。大多数 CA 都提供 PEM 格式的 SSL 证书,证书文件扩展名各不相同,例如 .pem、.crt、.cer 或 .key。

PEM代表隐私增强电子邮件,您可能想知道电子​​邮件与 SSL 证书有什么关系?长话短说,PEM 未能完成其主要工作,但发现了其作为容器格式的应用。

本质上,PEM 文件是 Base64 编码的 DER 文件,其中零和一被编码为可打印字符序列。这样,您可以使用任何文本编辑器(包括记事本)打开它们。

单个 .pem 文件可以包含服务器证书、中间证书和私钥。或者,您可以在单独的 .crt 或 .cer 文件中接收服务器证书和中间证书,而私钥可能位于 .key 文件中。

PKCS#7 格式

PKCS代表公钥加密标准。

PKCS#7是一种用于分发加密数据的多用途 SSL 证书格式。它主要用于 Windows 平台和 Java Tomcat。

今天,我们实际上正在使用它的后继者 CMS(加密消息语法),但就像SSL 和 TLS一样,旧名称已经变得太熟悉而无法取代。

PKSC#7 有两个文件扩展名:.p7b 或 p7c。与 PEM 不同,PKCS#7 不能存储私钥,只能存储主要证书和中间证书。

PKCS#12 格式

PKCS#12是另一种安全性增强的公共加密标准。与 PEM 文件一样,它可以将整个 SSL 证书链和密钥对包含在单个 .pfx 文件中。主要区别在于 PCKS#12 是一个受密码保护的容器。

有些服务器系统在生成CSR时会提示您输入密码,您可以使用它来打开.pfx文件。

SSL 格式转换

现在您已经了解了 SSL 证书格式及其多个证书文件扩展名,现在是时候揭示您真正等待的内容了——如何将 SSL 证书转换为任何格式。

与大多数文件转换一样,有多种方法可以完成转换。最快的方法是使用自动SSL 转换工具。您只需选择所需的操作(例如,PEM 到 PKCS#7 的转换),上传文件,然后点击转换。

或者,您可以使用免费的 OpenSSL 软件库来转换 SSL 文件。此实用程序几乎可以在任何现有服务器上启用 SSL/TLS 协议。许多平台和 Linux 发行版都预装了 OpenSSL 实用程序。对于 Windows,您必须获取安装包。

将 X.509 转换为 PEM

要将 X.509 转换为 PEM,请在 OpenSSL 中运行以下命令:

openssl x509 -in certificatename.cer -outform PEM -out certificatename.pem

将 DER 转换为 PEM

二进制编码为 Base64 ASCII。

要将 DER 转换为 PEM,请运行以下命令:

openssl x509 -inform der -in certificatename.der -out certificatename.pem

将 PEM 转换为 DER

Base65 ASCII 到二进制编码。

要将 PEM 转换为 DER,请运行以下命令:

openssl x509 -inform der -in certificatename.der -out certificatename.pem

将 PEM 转换为 PKCS#7

.p7b 文件不包含私钥。

要将 PEM 转换为 PKCS#7,请运行以下命令:

openssl crl2pkcs7 -nocrl -certfile certificatename.pem -out certificatename.p7b -certfile CACert.cer

将 PKCS#7 转换为 PEM

要将 PKCS#7 转换为 PEM,请运行以下命令:

openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.pem

将 PKCS#12 转换为 PEM

PKCS#12 文件受密码保护。

要将 PKCS#12 转换为 PEM,请运行以下命令:

openssl pkcs12 -in certificatename.pfx -out certificatename.pem

将 PKCS7 转换为 PKCS12

这需要两个步骤。首先将 P7B 文件转换为 CER,然后将 CER 和私钥合并为 PFX。

openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.cer

openssl pkcs12 -export -in certificatename.cer -inkey privateKey.key -out certificatename.pfx -certfile  cacert.cer

就是这样。现在您可以快速转换任何类型的 SSL 文件并将其安装到您的服务器上。

了解 SSL 证书格式、证书文件扩展名以及如何将它们转换为您想要的配置是一项宝贵的技能,它将帮助您在任何系统上无缝安装 SSL 证书。

选择正确的 SSL 格式将确保 Web 服务器、电子邮件客户端和网络上的稳定加密和安全连接。


http://www.ppmy.cn/embedded/153071.html

相关文章

热门力反馈手套对比,机器人遥操作完美解决方案

随着机器人技术的快速发展,遥操作机器人作为代替人类在危险环境中完成高危任务或在医疗领域完成远程精密手术的完美解决方案,正在快速进步,并有望成为拥有巨大潜力的机器人行业的全新发展方向。 本文将就推动机器人遥操作领域发展的力反馈手…

python初体验: 处理excel数据

一. data.xlsx 二.python代码 import pandas as pd# 读取 Excel 文件 df pd.read_excel(./data.xlsx, sheet_nameSheet1, usecols[Name, Age, City])# 查看数据 print(df.head())# 筛选数据 df_filtered df[df[Age] > 30]# 添加新列 df_filtered[Salary] df_filtered[Ag…

AI刷题-异或编码、拼凑单词 chi

目录 一、异或编码 问题描述 测试样例 解题思路: 问题理解 解题思路 数据结构选择 算法步骤 最终代码: 运行结果: 二、拼凑单词 chi 问题描述 测试样例 解题思路: 问题理解 数据结构选择 算法步骤 最终代码&a…

如何用Python编程实现自动整理XML发票文件

传统手工整理发票耗时费力且易出错,而 XML 格式发票因其结构化、标准化的特点,为实现发票的自动化整理与保存提供了可能。本文将详细探讨用python来编程实现对 XML 格式的发票进行自动整理。 一、XML 格式发票的特点 结构化数据:XML 格式发票…

如何在 deepin文件夹中搜索包含特定内容、关键字的 Word 文档

在 deepin 系统中,搜索包含特定内容或关键字的 Word 文档是一项常见需求。以下是一个详细的步骤指南,帮助你在文件夹中高效地完成这项任务。 一、安装依赖工具 要搜索 Word 文档,首先需要安装一些必要的工具。这些工具包括 catdoc、docx2tx…

linux的shell中自定义的分隔符怎么用

在 Shell 脚本中,自定义分隔符可以通过多种方式使用,特别是在处理文件或字符串时。常见的场景包括读取以特定字符分隔的文件、设置 IFS(内部字段分隔符)来分割字符串等。以下是几种常见方法及其示例: ### 1. 使用 IFS…

HTML + CSS:如何强制div内容保持一行?

参考:https://cloud.tencent.com/developer/information/HTML%20%2B%20CSS%3A%E5%A6%82%E4%BD%95%E5%BC%BA%E5%88%B6div%E5%86%85%E5%AE%B9%E4%BF%9D%E6%8C%81%E4%B8%80%E8%A1%8C%EF%BC%9F 在HTML和CSS中,要强制让div内容保持在一行,可以使用以下方法&a…

sqlalchemy CreateIndex

一、CreateIndex 的工作原理: CreateIndex 本身只是 SQLAlchemy 中的一个构造函数,它只是创建了一个表示索引的对象,而不会直接在数据库中生成索引。要让索引在数据库中实际生成,需要将这个表示索引的对象通过 metadata.create_a…