为多域生成CSR

时间:2012-02-06 09:45:32

标签: apache ssl openssl

如何为多域生成CSR。

我发现为单个域生成CSR如下:

openssl req -new -newkey rsa:2048 -nodes -keyout yourdomain.key -out yourdomain.csr

但我如何生成CSR多域

1 个答案:

答案 0 :(得分:32)

对于支持多个域的X.509证书,根据RFC 2818 (HTTP over TLS)(或RFC 6125),它必须使用多个主题备用名称DNS条目:

  

如果存在类型为dNSName的subjectAltName扩展名,则必须   用作身份。否则,(最具体的)通用名称   必须使用证书的Subject字段中的字段。虽然   使用Common Name是现有的做法,它已被弃用   鼓励证书颁发机构改为使用dNSName。

     

使用指定的匹配规则执行匹配   [RFC2459]。如果存在多个给定类型的标识   证书(例如,多个dNSName名称,任何一个匹配   该集合被认为是可以接受的。)

this document中所述(除了-des3命令我也使用genrsa,以保护私钥):

  • 复制一份初始openssl.cnf文件(原文可能位于Linux下/etc下的某处)。
  • 对其进行修改,以便在req_extensions = v3_req部分添加[ req ]
  • 对其进行编辑,在subjectAltName=DNS:www.example.com,DNS:www.other-example.com部分中添加DNS:(每个主机名[ v3_req ]条目一次)。
  • 让OpenSSL使用该配置文件。使用OPENSSL_CONF=/path/to/your/openssl.cnf openssl req ...
  • 进行调用

话虽如此,我不会过多担心在CSR中设置任何扩展名。任何好的CA都应该忽略您在CSR中设置的任何内容,并且只在发布实际证书时设置他们实际验证的内容。他们会愉快地替换您的主题DN中的任何RDN(例如国家,组织,......)以及任何扩展(SAN或密钥用法)。首先,如果他们按照申请人的CSR要求进行任何延期,这将是一个安全风险,因为一些申请人真的可以得到任何东西。其次,这是他们如何赚取额外的钱,通过收取你在这里和那里设置几个位(例如代码签名扩展)的费用:他们将确保你只获得你在证书中支付的费用。但我知道,您可能希望将您要求的所有名称都放在CSR中,以确保。