Openssl 在证书上,当电子邮件地址在subjectAltName中时,应该是什么类型

Openssl 在证书上,当电子邮件地址在subjectAltName中时,应该是什么类型,openssl,x509,m2crypto,Openssl,X509,M2crypto,一点点背景信息: 我正在使用M2Crypto和Django构建一个应用程序,所以请在投票结束之前三思而后行,因为这是一个离题的问题!:) 我的方法是最终用户由电子邮件地址标识,他们的自签名信任锚显然是由他们自己发布的,但我应该如何存储他们的“身份” 我在野外看到过许多证书,它们的做法是将邮件地址存储为subjectAltName=rfc822:user@domain.test,但标准方式是subjectAltName=email:user@domain.test 两者之间有什么区别吗?如果有,哪

一点点背景信息: 我正在使用M2Crypto和Django构建一个应用程序,所以请在投票结束之前三思而后行,因为这是一个离题的问题!:)

我的方法是最终用户由电子邮件地址标识,他们的自签名信任锚显然是由他们自己发布的,但我应该如何存储他们的“身份”

我在野外看到过许多证书,它们的做法是将邮件地址存储为
subjectAltName=rfc822:user@domain.test
,但标准方式是
subjectAltName=email:user@domain.test

两者之间有什么区别吗?如果有,哪一个更可取

两者之间有什么区别吗?如果有,哪一个更可取

不是真的;这取决于您使用的PKI配置文件。PKI和X509是野生的、野生的、西部的

如果您在组织内部运行一个私有PKI,则无论您如何运行它。挑选一些东西并始终如一地做


在web上,它通常是PKIX,并在RFC 5280中指定。根据4.1.2.6,主题:

Conforming implementations generating new certificates with
electronic mail addresses MUST use the rfc822Name in the subject
alternative name extension (Section 4.2.1.6) to describe such
identities.  Simultaneous inclusion of the emailAddress attribute in
the subject distinguished name to support legacy implementations is
deprecated but permitted.
第4.2.1.6节,受试者备选名称:

When the subjectAltName extension contains an Internet mail address,
the address MUST be stored in the rfc822Name.  The format of an
rfc822Name is a "Mailbox" as defined in Section 4.1.2 of [RFC2821].
A Mailbox has the form "Local-part@Domain".  Note that a Mailbox has
no phrase (such as a common name) before it, has no comment (text
surrounded in parentheses) after it, and is not surrounded by "<" and
">".
(很抱歉,我没有提取
IA5Strings
handy的示例)

在上面,请注意类型:
GEN\u DNS
或通用DNS名称。这用于
www.example.com
等名称。OpenSSL有几种类型,下面是来自
x509v3.h

#define GEN_OTHERNAME   0
#define GEN_EMAIL       1
#define GEN_DNS         2
#define GEN_X400        3
#define GEN_DIRNAME     4
#define GEN_EDIPARTY    5
#define GEN_URI         6
#define GEN_IPADD       7
#define GEN_RID         8
您的证书查看器或演示软件可能正在显示
rfc822:
电子邮件:
,因为它遇到了类型
GEN\u电子邮件


当您查看OpenSSL的配置文件时,您将看到,例如:

...
[ v3_ca ]
subjectKeyIdentifier   = hash
authorityKeyIdentifier = keyid:always,issuer:always
subjectAltName         = email:myEmail@email.com
issuerAltName          = issuer:copy
电子邮件:
不会逐字复制到SAN中。相反,它告诉OpenSSL对字段使用
GEN_EMAIL
类型


如果您的证书查看器或演示软件未添加前缀,则可能是在解析一个可分辨名称

至于什么是杰出的名字,Peter Gutmann很久以前告诉我(摘自他的电子邮件):“在DN中粘贴任何你想要的东西,只显示有用的部分”。就像我说的,这里是狂野的西部


电子邮件地址也可能显示在OID下。比如,。这是对SAN的补充。这就是为什么下面的图片有“电子邮件地址”的标签


彼得·古特曼有一个好主意。摘自他的描述:它描述了各种X.509证书实现细节和陷阱,提供了关于做什么和不做什么的建议,最后列出了在现有实现中要注意的已知错误和问题


最后,这里是Startcom颁发的用户证书。他们提供免费证书,并在需要时向您收取吊销费用(因为这就是成本所在)。这与其他CA截然相反,后者会提前收取撤销费用,并在不需要时将其收入囊中;)

第一个是X509证书:

其次是使用Gutmann的
dumpasn1
转储证书(从www.cs.auckland.ac.nz/~pgut001获取dumpasn1.c和dumpasn1.cfg;使用
gcc dumpasn1.c-o dumpasn1
编译;并复制到
/usr/local/bin
)。请注意,没有
rfc822:
电子邮件:
前缀:

...
[ v3_ca ]
subjectKeyIdentifier   = hash
authorityKeyIdentifier = keyid:always,issuer:always
subjectAltName         = email:myEmail@email.com
issuerAltName          = issuer:copy