为多域生成CSR

Eli*_*isa 29 apache ssl openssl

如何为多域生成CSR.

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

openssl req -new -newkey rsa:2048 -nodes -keyout yourdomain.key -out yourdomain.csr
Run Code Online (Sandbox Code Playgroud)

但是如何生成CSR多域

Bru*_*uno 33

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

如果存在类型为dNSName的subjectAltName扩展名,则必须将其用作标识.否则,必须使用证书的Subject字段中的(最具体的)Common Name字段.尽管使用Common Name是现有做法,但不推荐使用它,并且鼓励证书颁发机构使用dNSName.

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

正如在描述这个文件(除非我将使用-des3过的genrsa命令,以保护私有密钥):

  • 复制你的初始openssl.cnf文件(原文可能/etc在Linux 下的某个地方).
  • 编辑它以添加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中,以确保这一点.