通过命令提示符使用 Openssl 将多个 DNS 添加到 CSR

问题描述 投票:0回答:1

我需要帮助了解如何创建包含多个 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 命令不起作用。说找不到以下文件配置文件。

我对这一切都很陌生。我正在从事企业社会责任,因为这是我实习的一部分。没有人知道如何做到这一点并没有帮助。我在网上查了半天还是没找到问题所在。

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

  2. 对于 TLS 和其他一些用途,您可以改为在 SubjectAlternativeName 扩展 (SAN) 中放置多个 DNS 名称,如 RFC 6125 中针对 TLS 的描述,以及专门针对 RFC 2818 中的 HTTPS 的描述。

  3. 可以将 SAN 扩展(或技术上请求的扩展)放入 CSR 中。在使用 OpenSSL 的正确设计的系统上,这在手册页中进行了描述,但 Windows 不提供手册页,因此您需要查看在线版本 for

    req(1)
    ,它描述了配置文件的一般情况和链接
    x509v3_config(5)
    ,它具体描述了 SAN。

    补充:对于版本 1.1.1(2020 年最新版本),您可以使用

    -addext
    在 CSR 中指定请求的扩展,如前面
    req(1)
    手册页所述。 (但是不要使用 both
    -addext
    和配置文件——它会创建无效的请求!)

  4. 但是由于您使用

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

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

    在这种情况下,配置文件(如上面链接的手册页中所述)可以指定主题名称 扩展名(使用

    x509_extensions
    项),其中可以包括 SAN 和/或命令行选项
    -subj
    -addext
    分别可以这样做。您还可以让它包含第一步 (
    genrsa
    ),如第一个示例所示:

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

    更新:对于 2021 年发布的 3.0.0 版本,

    x509 -req
    有选项
    -copy_extensions
    ,它确实适用于方法#3。 OTOH 这种直接使用
    req -new -x509
    创建证书的方法也有效,而且总体上更简单。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.