gpt4 book ai didi

security - PEM 文件格式在哪里指定?

转载 作者:行者123 更新时间:2023-12-03 06:10:22 25 4
gpt4 key购买 nike

我需要解析 .PEM 文件。
我知道 RFC 1421-24 中定义了“增强隐私的电子邮件”标准。但他们似乎没有提到我在 OpenSSL .pem 文件中找到的一些文本(例如“关键属性”、“开始证书”等......)这是 OpenSSL 特定的格式吗?

最佳答案

很长一段时间以来,关于信息加密交换的 PEM 格式都没有正式规范。 PEM 是文本编码,但实际编码的内容取决于上下文。 2015年4月,IETF批准RFC 7468 ,它最终记录了各种实现如何使用 PEM 文本编码交换数据。以下列表直接取自 RFC,描述了用于以下场景的 PEM 格式:

  1. 证书、证书吊销列表 (CRL) 和主题互联网中的公钥信息结构 X.509 公钥基础设施证书和证书吊销列表 (CRL)简介 [RFC5280] .
  2. PKCS #10:认证请求语法 [RFC2986] .
  3. PKCS #7:加密消息语法 [RFC2315] .
  4. 加密消息语法 [RFC5652] .
  5. PKCS #8:私钥信息语法 [RFC5208] ,重命名为一非对称 key 包中的非对称 key [RFC5958]和加密的同一文档中的私钥信息语法。
  6. 互联网属性证书中的属性证书授权配置文件 [RFC5755] .

根据此 RFC,对于上述场景,您可以预期以下标签位于 BEGIN 页眉和 END 页脚内。 RFC 的图 4 有更多详细信息,包括相应的 ASN.1 类型。

但这并不是故事的全部。 RFC 是通过查看现有实现并记录它们所做的事情来编写的。 RFC并不是首先编写的,也不是根据现有的一些权威文档编写的。因此,如果您最终想要与某些实现进行互操作,您可能必须查看实现的源代码以找出它们支持的内容。

例如,OpenSSL 在 crypto/pem/pem.h 中定义了这些 BEGIN 和 END 标记。 。以下是头文件的摘录,其中包含它们支持的所有 BEGIN 和 END 标签。

# define PEM_STRING_X509_OLD     "X509 CERTIFICATE"
# define PEM_STRING_X509 "CERTIFICATE"
# define PEM_STRING_X509_TRUSTED "TRUSTED CERTIFICATE"
# define PEM_STRING_X509_REQ_OLD "NEW CERTIFICATE REQUEST"
# define PEM_STRING_X509_REQ "CERTIFICATE REQUEST"
# define PEM_STRING_X509_CRL "X509 CRL"
# define PEM_STRING_EVP_PKEY "ANY PRIVATE KEY"
# define PEM_STRING_PUBLIC "PUBLIC KEY"
# define PEM_STRING_RSA "RSA PRIVATE KEY"
# define PEM_STRING_RSA_PUBLIC "RSA PUBLIC KEY"
# define PEM_STRING_DSA "DSA PRIVATE KEY"
# define PEM_STRING_DSA_PUBLIC "DSA PUBLIC KEY"
# define PEM_STRING_PKCS7 "PKCS7"
# define PEM_STRING_PKCS7_SIGNED "PKCS #7 SIGNED DATA"
# define PEM_STRING_PKCS8 "ENCRYPTED PRIVATE KEY"
# define PEM_STRING_PKCS8INF "PRIVATE KEY"
# define PEM_STRING_DHPARAMS "DH PARAMETERS"
# define PEM_STRING_DHXPARAMS "X9.42 DH PARAMETERS"
# define PEM_STRING_SSL_SESSION "SSL SESSION PARAMETERS"
# define PEM_STRING_DSAPARAMS "DSA PARAMETERS"
# define PEM_STRING_ECDSA_PUBLIC "ECDSA PUBLIC KEY"
# define PEM_STRING_ECPARAMETERS "EC PARAMETERS"
# define PEM_STRING_ECPRIVATEKEY "EC PRIVATE KEY"
# define PEM_STRING_PARAMETERS "PARAMETERS"
# define PEM_STRING_CMS "CMS"

这些标签是一个开始,但您仍然需要研究实现如何对标签之间的数据进行编码。一切事情都没有一个正确答案。

关于security - PEM 文件格式在哪里指定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5355046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com