要了解 SSL 证书是什么以及它是如何工作的,其实很容易。 但说到在服务器上安装,有时你可能会觉得这是一门火箭科学。
有如此多的SSL 证书格式与特定的服务器要求挂钩,你更有可能感到困惑和沮丧,而不是从一开始就正确配置证书。 但这种情况即将改变。
在本综合指南中,我们将剖析每种SSL 证书格式和证书文件扩展名,并向你展示两种转换不同文件类型的方法。
目录
证书文件格式 – 基础知识
让我们从基础知识开始。 所有 SSL 证书都是 x.509 证书。 这是公钥证书的标准格式,用一种名为 “抽象语法符号一 “的正式语言表达。 关于 X.509 的结构,我们不再赘述;您可以在维基网站上阅读相关信息。 我们在此讨论 SSL 证书格式,如 DER、PEM、PKCS#7 和 PKCS#12。
区分它们的简单方法是看它们的编码。
PEM和PKCS#7使用 Base ASCII(美国信息交换标准码)编码。 对于包含文本的文件来说,这是一种流行的标准。
DER和PKCS#12使用二进制编码,这是一种仅由 0 和 1 组成的二进制数字系统。
由于格式和编码不同,SSL 证书有许多文件扩展名。
SSL 证书格式和文件扩展名
让我们仔细研究一下每种格式及其 SSL 证书文件扩展名。 您将发现每个缩写背后的含义,以及什么系统最常用这个缩写。
DER 格式
DER是Distinguished Encoding Rules 的缩写,是一种二进制编码格式,在 Windows 以外很少使用。它包含在 .der 或 .cer 文件中。
PEM 格式
PEM是最常用的 SSL 证书格式,也是你可能会遇到的格式。大多数 CA 都提供 PEM 格式的 SSL 证书,证书文件扩展名各不相同,如 .pem、.crt、.cer 或 .key。
PEM是 “隐私增强型电子邮件“(Privacy-Enhanced Email)的缩写,您可能想知道电子邮件与 SSL 证书有什么关系? 长话短说,PEM 的主要工作失败了,但作为一种容器格式却得到了应用。
从本质上讲,PEM 文件是 Base64 编码的 DER 文件,其中的 0 和 1 是用可打印字符序列编码的。 这样,你就可以用任何文本编辑器(包括记事本)打开它们。
单个 .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 文件一样,它可以在一个 .pfx 文件中包含整个 SSL 证书链和密钥对。主要区别在于 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 格式可确保网络服务器、电子邮件客户端、VPN 设备和网络的稳定加密和安全连接。
常见问题
导出证书备份文件使用的文件扩展名因证书的格式和类型而异。最常见的证书备份文件是 .p12 和 .pfx(Windows 系统)、.cer 和 .crt,以及用于备份私钥的 .key。
复制链接
Apache 使用 .cer .crt 和 .key 文件扩展名的 PEM 证书格式。
复制链接
要在 Linux 上创建 PEM 格式的 SSL 证书,可以使用 OpenSSL 工具包及其命令行。 从 CA 收到 SSL 证书后,使用以下命令将私钥和 SSL 证书串联到一个文件中,即可创建 PEM 格式文件:
cat private.key your_ssl_certificate.crt > your_ssl_certificate.pem
复制链接
用任何文本编辑器打开 SSL 文件。 如果证书文件开头有”—–BEGIN CERTIFICATE—–“标签,文件结尾有”—–END CERTIFICATE—–“标签,则证书为 PEM 格式。 如果证书是 DER 格式,则不包含这些标签,而是二进制文件。
复制链接
PKCS#12 或 PFX 格式包含证书和私人密钥。 这种格式将私钥和相关证书存储在一个加密文件中。
复制链接
我们编写了一份详细指南,介绍如何在 Microsoft IIS(Internet 信息服务)中导入和导出 PFX 文件。
复制链接