【问题标题】:Adding multiple DNS to CSR with Openssl via command prompt通过命令提示符使用 Openssl 将多个 DNS 添加到 CSR
【发布时间】:2021-02-16 20:24:51
【问题描述】:

我需要帮助了解如何创建包含多个 DNS 的 CSR。我正在使用 Windows 命令提示符创建 csr

原来我用

Openssl req -new -newkey rsa:2048 -nodes -keyout -test.key -out test.csr

使用 1 个通用名称创建 csr。

我在网上搜索,我正在尝试的代码是

openssl genrsa -out test.key
openssl req -new -key test.key -out test.csr -config csr.conf
openssl x509 -req -days 365 -in test.csr -signkey test.key -out test.crt -extensions req_ext -extfile csr.conf

但是,我相信你们都很清楚,第二行的 -config 命令不起作用。说找不到下面的文件配置文件。

我对这一切都很陌生。我正在做 csr,因为它是我实习的一部分。没有人知道该怎么做,这无济于事。我在网上搜索了半天,还是找不到问题所在。

【问题讨论】:

    标签: openssl command-prompt csr


    【解决方案1】:
    1. (Meta) 这与编程问题或问题无关,很可能作为题外话被关闭;尽管在过去十年的早期,stackoverflow 相当广泛,但近年来,由于其他主题已经创建了其他 stackexchange 站点,并且大量的非编程问题使得该站点更难用于其预期目的,并且受众对话题性变得更加严格。

    2. CSR 和 X.509 证书中的 Subject 字段只能有效地包含 CommonName 中的一个 DNS 名称,至少与 TLS 常用的一样,即以前称为 SSL 的 artist协议。从技术上讲,RDN 可以有多个值,但规范规定只使用第一个值,而忽略所有其他值。如果此证书用于 TLS 以外的其他内容,它可能允许名称属性的其他组合,在这种情况下,您应该参考该协议或应用程序的相关规范。

    3. 对于 TLS 和其他一些用途,您可以将多个 DNS 名称放在 SubjectAlternativeName extension (SAN) 中,如 RFC 6125 中的 TLS 和 HTTPS 特别是 RFC 2818 中所述。

    4. 可以将 SAN 扩展(或技术上要求的扩展)放入 CSR。在使用 OpenSSL 的正确设计的系统上,手册页中对此进行了描述,但 Windows 不提供手册页,因此您需要查看在线版本 for req(1),它一般描述了配置文件并链接到 @987654325 @ 专门描述 SAN。

    5. 但由于您使用 openssl x509 -req 从 CSR 创建证书,因此这完全没用,因为 x509 -req 不使用 CSR 中的任何扩展。相反,如果您想要一个包含 DNS 名称的 SAN 证书,您需要使用此扩展名创建 证书,而不是 CSR。最简单的方法是将req-new-x509 结合使用,这有效地结合了您的第二步和第三步:

        openssl req -new -key test.key -x509 -days 365 -config $file -out test.crt
      

      在这种情况下,配置文件,如上面链接的手册页中所述,可以指定主题名称​​和可以包括 SAN 的扩展名(使用x509_extensions 项)。您也可以在第一个示例中包含第一步 (genrsa):

       openssl req -new -newkey rsa:2048 -nodes -keyout test.key -x509 -days 365 -config $file -out test.crt
      

    【讨论】:

      猜你喜欢
      • 2019-12-31
      • 1970-01-01
      • 2017-04-09
      • 2018-04-14
      • 1970-01-01
      • 2021-01-31
      • 1970-01-01
      • 2018-12-08
      • 2018-03-26
      相关资源
      最近更新 更多