【问题标题】:Write additional properties into a certificate将附加属性写入证书
【发布时间】:2016-01-30 23:02:14
【问题描述】:

当我创建一个像下面这样的证书签名请求时,我必须运行一个进程,并且需要输入几个属性,每个证书都有单独的值。 (见下图)

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

现在我想将其他属性放入证书中,例如安装稍后验证文件的设备的 mac 地址。

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

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

我很高兴在这里得到任何帮助。

【问题讨论】:

    标签: openssl certificate ca


    【解决方案1】:

    首先,req -new(没有-x509)创建一个 CSR(证书签名请求)而不是证书。您放入 CSR 中的名称属性和/或扩展名是否以及随后出现在证书中取决于颁发证书的 CA。

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

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

    请注意,在 DistinguishedName 中可以有多个属性实例,即您可以有 2(或 3 或 7)个 OU,对 openssl 配置文件进行调整(并须经 CA 批准,如总是)。尽管如果您希望某些软件使用此证书来自动检查其中一个特定的值,它会变得有点复杂。

    【讨论】:

    • 谢谢。正如您在问题中看到的那样,我从签名请求开始。是的,直接使用 MAC 地址是不安全的。但是要存储例如散列值可以在目标设备上进行比较。目标设备是一个嵌入式系统,因此如果不付出巨大的努力,就不可能进行欺骗。将信息存储在 OU 中是我已经想到的最合适的方式,但我现在问我是否有任何方法可以使用 openssl 生成包含完全自定义属性的证书,这些属性可以通过 CA 方式信任。
    • 您的设备可能很难被欺骗,但 CA 无法知道您的证书,并且密钥不会在可以欺骗的设备上使用。除了通常的名称字段之外,我不知道您所说的自定义属性是什么意思。您可以在 OU 中放置任何(相当小的)文本。您可以配置 openssl 配置文件以将为其分配 OID 的主题名称附加(文本)属性,例如 rfc5280 的 A.1 中的那些,但这些属性是否进入证书取决于 CA。 ...
    • 您可以配置 openssl 配置文件以放入为其分配了 OID 和语法的请求扩展名,尽管编码比单个字符串元素更复杂的任何内容都很复杂,但这些扩展名是否进入证书取决于 CA。如果您使用 openssl 来颁发证书,例如 ca 命令行实用程序,那么您可以通过将名称属性包含在策略中来复制它们(修改现有策略,或创建并使用新的策略)一)并且您可以使用 copy_extensions 从 CSR en bloc 复制扩展,或者在问题中执行它们而不是 CSR。
    猜你喜欢
    • 2019-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-05
    • 1970-01-01
    • 2011-11-01
    • 2021-06-25
    相关资源
    最近更新 更多