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 服务器、电子邮件客户端和网络上的稳定加密和安全连接。