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

news/2025/1/9 16:01:19 标签: ssl, 网络协议, 网络

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.niftyadmin.cn/n/5817707.html

相关文章

DuckDB:PRAGMA语句动态配置数据库行为

PRAGMA语句是DuckDB从SQLite中采用的SQL扩展。PRAGMA命令可能会改变数据库引擎的内部状态,并可能影响引擎的后续执行或行为。本文介绍PRAGMA命令及其典型应用场景。 DuckDB PRAGMA介绍 在 DuckDB 中,PRAGMA 是一种编译指示(compiler directi…

python注意事项:range遍历越索引现象、列表边遍历边修改出现的问题

文章目录 前言一、range遍历越索引现象QS1:遍历range(2,2)会发生什么?不会报错,但是也不会遍历到任何内容QS1:遍历range(3,2)会发生什么?不会报错,但是也不会遍历到任何内容 二、列表边遍历边修改注意事项(Java的List系…

http range 下载大文件分片

摘自:https://www.jianshu.com/p/32c16103715a 上传分片下载也能分 HTTP 协议范围请求允许服务器只发送 HTTP 消息的一部分到客户端。范围请求在传送大的媒体文件,或者与文件下载的断点续传功能搭配使用时非常有用。 检测服务器端是否支持范围请求 假…

esp32 mqtt连接阿里云细节配置

物联网相关文档地址如下: 物联网平台(IoT)-阿里云帮助中心 需要配置hash算法,才能解析阿里云物联网平台自签名证书 然后按如下找到产品秘钥,设备名称,设备秘钥 域名配置如下:注意旧版和新版的区别 替换对应代码的此处…

《Spring Framework实战》7:4.1.2.容器概述

欢迎观看《Spring Framework实战》视频教程 容器概述 该接口表示 Spring IoC 容器,并负责实例化、配置和组装 bean。 容器在组件上获取其指令,以实例化、配置和 通过读取配置元数据进行汇编。可以表示配置元数据 作为带注释的组件类、具有工厂方法的配置…

Linux-----进程处理(waitpid,进程树,孤儿进程)

目录 waitpid等待 进程树 孤儿进程 waitpid等待 Linux中父进程除了可以启动子进程,还要负责回收子进程的状态。如果子进程结束后父进程没有正常回收,那么子进程就会变成一个僵尸进程——即程序执行完成,但是进程没有完全结束,其…

Ollama私有化部署大语言模型LLM(上)

目录 一、Ollama介绍 二、安装Ollama 1、标准安装 2、国内加速 三、升级Ollama版本 四、使用Ollama 1、启动ollama服务 systemctl start ollama.service ollama serve 2、使用ollama命令 ollama run 运行模型 ollama ps 查看正在运行的模型 ollama list 查看已有(已…

什么是Spring Boot?深度解析其核心概念与优势

引言 在Java开发领域,Spring框架一直以其强大的功能和灵活性著称,然而,其复杂的配置和庞大的学习曲线也常常让开发者望而却步。Spring Boot的出现,正是为了解决这些问题,提供了简化Spring应用开发的解决方案。本文将深…