.pem、.cer 和 .der 之间有什么区别?

2024-01-11

两者有什么区别.pem, .cer and .der?

据我所知,.cer包含公钥。是否有任何开放框架可用于使用此公钥加密我的数据?


.pem, .cer and .der都是可能包含 X.509 v3 证书的文件的文件扩展名。

The .der扩大

DER 是对构成证书的数据进行编码的方法。 DER本身可以代表any一种数据,但通常它描述编码证书或 CMS 容器。 CMS 在 PKCS#7 中描述(通常存储为.p7),代表加密消息语法,可用于保护消息并存储证书,以允许接收者在接收者的信任存储中构建到证书的信任路径。

证书的结构使用 ASN.1 数据表示语言进行描述。 BER 和 DER 是 ASN.1 描述的数据的二进制编码方法。

The .pem扩大

PEM 是一种将二进制数据编码为字符串的方法(也称为 ASCII 装甲)。它包含标题行和页脚行(指定编码的数据类型,如果数据链接在一起则显示开始/结束),中间的数据是 Base 64 数据。如果它对证书进行编码,它将仅包含 DER 证书的 Base 64 编码。 PEM 代表隐私增强邮件;邮件不能直接包含未编码的二进制值,例如 DER。

PEM 还可以编码/保护与证书相关的其他类型的数据,例如公钥/私钥、证书请求等。如果内容是常见的 X509v3 证书,则 PEM 编码为:

-----BEGIN CERTIFICATE-----
... base 64 encoding of the DER encoded certificate
    with line endings and padding with equals signs ...
-----END CERTIFICATE-----

请注意,PEM 文件还可能包含完整的证书链,其中该链以服务的叶/结束证书开始,后跟对其进行签名的证书,通常直至但不包括受信任的根证书。因此,如果您丢失了证书,您可能需要查看第一个证书的后面。

The .cer or .crt扩大

.cer只是代表证书。它通常是 DER 编码的数据,但 Windows 也可能接受 PEM 编码的数据。您需要查看内容(例如,使用fileposix 系统上的实用程序)来查看文件中的内容,以 100% 确定。

其他 OpenSSL 格式

看一眼这个答案 https://serverfault.com/questions/9708/what-is-a-pem-file-and-how-does-it-differ-from-other-openssl-generated-key-file有关 OpenSSL 支持的内容的更广泛列表。


使用公钥包含在证书中(和被...签名证书中的签名)您应该使用任何解析 X.509 证书并执行 RSA 加密的库。您可以使用检测/处理 PEM 编码的工具,或者您可以首先通过剥离 PEM 编码将证书转换为 DER。

OpenSSL 命令行包含许多选项,可用于在 PEM 和 DER 之间进行转换、打印高级证书信息或解析 ASN.1 以获取其中内容的低级视图。

Details

与大多数 ASN.1 结构一样,DER 编码的证书始终以一个字节开始30这是 ASN.1 的标签编码SEQUENCE。如果您在文件中看到大量重复内容,那么这没有问题;这只是结构这是严格定义的。

同样,PEM 编码文件中的 64 基数始终以字母开头M作为 ASN.1SEQUENCE以一个字节开始30,所以前 6 位是001100,翻译为数字 12,即字母的索引M,字母表中的第十三个字母。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.pem、.cer 和 .der 之间有什么区别? 的相关文章

随机推荐

  • 部分 .csproj 文件

    是否可以将 csproj 中的信息拆分到多个文件中 有点像项目版本partial class特征 您不能拥有多个主 csproj 但因为 csproj 的底层接线是使用 msbuild 完成的 所以您可以简单地拥有多个相互导入的部分 csp
  • SwiftUI 列表在任何视图更改时重置滚动

    我有一个非常简单的列表 其中有一些部分 在同一视图中 我还有一个按钮 当选择任何列表项时 该按钮将被启用 这是由状态变量控制的 当发生这种情况时 如果列表向下滚动 状态变量将发生变化 以启用按钮 并且所有视图将刷新 导致我的列表滚动到顶部
  • 使用 pandas 组合日期和时间列

    我有一个带有以下列的 pandas 数据框 data Date 01 06 2013 02 06 2013 02 06 2013 02 06 2013 02 06 2013 03 06 2013 03 06 2013 03 06 2013
  • 使用 memcache 进行 Ratchet 会话数据同步

    我创建了一个 Ratchet Web Socket 服务器并尝试使用 SESSIONS 在 HTTP Web 服务器 端口 80 上的 php 文件中 我像这样设置会话数据 use Symfony Component HttpFoundat
  • PBEWITHSHA256AND128BITAES-CBC-BC 在 RedHat 6.4 上创建 java.security.NoSuchAlgorithmException

    我们有一个应用程序使用Bouncy Castle使用加密数据PBEWITHSHA256AND128BITAES CBC BC算法 它运行良好Ubuntu跑步OpenJDK 1 7 但是当我们把它移到RedHat 6 4也在运行OpenJDK
  • 如何使用css3/javascript将圆分成12等份并带有颜色

    HTML div class circle p class innerCircle p div CSS circle width 450px height 450px border top 30px solid 416fa6 border
  • C 编程输入一个除以 10 的列表

    我正在尝试编写一个程序 其中用户输入随机数 程序输入从 0 到 9 的列表 例如 假设用户输入数字 12 那么屏幕应如下所示 0123456789012 其中末尾的 2 表示第 12 个数字 我已经尝试过这个 但它给了我一个无限循环 我不知
  • JRuby/Windows 和(本机)扩展如何区分它们?

    我尝试将 EventMachine 等与 JRuby 一起使用 我收到有关本机扩展的错误 我相信这是由于 Java 的限制 我认为我使用 Windows 的事实使问题进一步复杂化 如果有一些澄清 我们将不胜感激 哪些扩展可以 不能与 JRu
  • 为什么用户控制类访问从另一个线程不安全?

    正如标题所示 为什么用户控件类访问从另一个线程不安全 我听说有一种方法可以启用跨线程访问 我正在考虑这样做 有想过为什么我不应该这样做吗 看看这个 http msdn microsoft com en us library ms171728
  • django聚合:求和然后求平均值

    使用 django 的 ORMannotate and or aggregate 我想根据一个类别字段进行汇总 然后对每个日期的类别值进行平均 我尝试用两个来做annotate 声明但得到了FieldError 我正在这样做 queryse
  • 在函数中使用关键字 - PHP [重复]

    这个问题在这里已经有答案了 可能的重复 在 PHP 5 3 0 中 函数 Use 标识符是什么 一个理智的程序员应该使用它吗 https stackoverflow com questions 1065188 in php 5 3 0 wh
  • Ruby 未定义方法 `+' for nil:NilClass (NoMethodError)

    红宝石新手 接收错误 nil NilClass 的未定义方法 NoMethodError 我不明白为什么我会收到这样一个简单的递增值任务的错误 但是 该错误可能是由其他原因引起的 原因是什么 class LinkedList class N
  • IP地址和端口号一起可以唯一标识进程ID吗?

    IP地址和端口号一起可以唯一标识进程ID吗 我正在寻找一种方法来获取相应的进程ID 给定IP地址和端口号 但我不确定这样的ip 端口对是否可以唯一标识一个pid 不必要 如果在进程中打开 接受套接字 然后分叉 则子进程也打开套接字 因此 I
  • 管道与重定向到进程

    寻找一些bash专家解释 下一个之间的确切区别是什么 command1 command2 例如经典管道 其中 command1 的 stdout 被重定向到 command2 的 stdin 例如 bash fork 自己两次 更改文件描述
  • 让私有方法返回 String 而不是传递 StringBuilder 的优点和缺点是什么[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在多台机器和硬盘上使用 nginx 提供静态文件

    我有一个项目 它将在部署后存储大量媒体内容 项目使用Python Django 也通过Gunicorn和Supervisor运行 对于静态文件 我将使用 nginx 我通过以下方式进行了基本设置本文 http michal karzynsk
  • 如何从其他类访问jFrame的组件?

    我有两个类 第一个是 NewJFrame java 它的代码是 package javaapplication10 import java awt Label public class NewJFrame extends javax swi
  • 在 Flask 中创建不返回响应的视图函数

    我对网络编程和 Flask 相当陌生 最近我尝试创建的网站遇到了问题 我目前有一个 jquery 过程 它将 post 请求发送到 Flask 中的视图函数 该函数只是增加我的数据库中的一个值 并且我实际上没有必要在增加该值后返回响应 然而
  • 如果开关盒掉落,如何使 MSVC 发出警告或失败?

    如果我的 switch 语句之一有一个不会中断的情况 我希望收到警告 错误 这可能吗 switch i case 1 cout lt lt one forgot to break here I want to be warned about
  • .pem、.cer 和 .der 之间有什么区别?

    两者有什么区别 pem cer and der 据我所知 cer包含公钥 是否有任何开放框架可用于使用此公钥加密我的数据 pem cer and der都是可能包含 X 509 v3 证书的文件的文件扩展名 The der扩大 DER 是对