如何为多域生成CSR。
我发现为单个域生成CSR如下:
openssl req -new -newkey rsa:2048 -nodes -keyout yourdomain.key -out yourdomain.csr
但我如何生成CSR多域
答案 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_CONF=/path/to/your/openssl.cnf openssl req ...
话虽如此,我不会过多担心在CSR中设置任何扩展名。任何好的CA都应该忽略您在CSR中设置的任何内容,并且只在发布实际证书时设置他们实际验证的内容。他们会愉快地替换您的主题DN中的任何RDN(例如国家,组织,......)以及任何扩展(SAN或密钥用法)。首先,如果他们按照申请人的CSR要求进行任何延期,这将是一个安全风险,因为一些申请人真的可以得到任何东西。其次,这是他们如何赚取额外的钱,通过收取你在这里和那里设置几个位(例如代码签名扩展)的费用:他们将确保你只获得你在证书中支付的费用。但我知道,您可能希望将您要求的所有名称都放在CSR中,以确保。