将其他属性写入证书

时间:2015-10-30 13:37:46

标签: openssl certificate ca

当我创建如下所示的证书签名请求时,我必须运行一个流程,并且需要输入多个属性,每个证书具有单独的值。 (见下图)

    openssl req -config ../CA/config/openssl.custom.cnf \
        -key ./private.key.pem \
        -new -sha256 -out ./private.certificate.csr.pem

enter image description here

现在我想将其他属性放入证书中,就像安装了以后验证过的文件的设备的mac地址一样。

我已经尝试修改自定义的openssl.cnf以在证书签名请求中写入其他属性,但没有任何运气,如果某种可能的话,我找不到正确的信息(可能使用了错误的搜索条件)

我的第一个想法是使用通用名称来编码我的附加属性,但我想这不是一个好习惯 - 不知道。

我很高兴在这里提供任何帮助。

1 个答案:

答案 0 :(得分:0)

首先,req -new(没有-x509)创建CSR(证书签名请求)而不是证书。您随后在证书中显示的CSR名称属性和/或扩展名是否由颁发证书的CA负责。

其次,如果此证书适用于(将是一个设备)HTTPS服务器,或大多数其他基于SSL / TLS的协议(如SMTPS,LDAPS等),则Subject中的CommonName应该是客户端用于连接到服务器;通常这将是一个完全合格的域名(通常必须是由Verisign,GoDaddy等公共CA颁发的证书),但对于内部网络和CA,它可以是本地名称或地址。正式名称SubjectAlternativeName扩展名取代CommonName,如果您的证书包含SAN(取决于您在CSR中可能会或可能不会请求的CA),客户端使用SAN进行名称匹配,并忽略CommonName,即使包含其他内容,但除非你检查所有将要使用的客户,否则我不会依赖它。如果证书是针对客户端或其他目的(如S / MIME协议)并不需要通信(URL)名称,但公共CA仍然希望确保它不会误导您的身份;由于MAC地址很容易被改变或欺骗,并且可能被错误地或有意地复制,我不知道它们是否会被认为是良好的识别。

如果您想在Subject中填充更多或更少的任意数据,OrganizationalUnit(OU)可能是最好的地方。它没有真正的共同含义,并且是CA/Browser Forum requirements之后CA需要验证的唯一与主题相关的值

请注意,可以在DistinguishedName中拥有多个Attribute实例,即您可以拥有2个(或3个或7个)OU,并对openssl配置文件进行调整(并且需要获得CA的批准,如总是)。虽然如果你想要一些软件使用这个证书来自动检查这些值中的特定值,它会变得有点复杂。