2012-02-06 50 views
25

如何生成多域的CSR。为多域生成CSR

我发现生成CSR单域是如下:

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

但我怎么生成CSR多域

+4

可能更多用于ServerFault:投票移动。 – Bruno 2012-02-06 10:24:30

回答

29

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

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

匹配使用由 [RFC2459]指定的匹配规则执行。如果给定类型的一个以上的同一性存在于 证书(例如,多于一个的DNSNAME名称,在该组中的任何一个 匹配被认为是可以接受的。)

this document(描述除了我会用-des3太为genrsa命令,以保护私有密钥):

  • 进行复印您的初始openssl.cnf文件(原来应该是介于/etc在Linux上)下。
  • 编辑它以在[ req ]部分添加req_extensions = v3_req
  • 编辑它以在[ v3_req ]部分添加subjectAltName=DNS:www.example.com,DNS:www.other-example.com(每个主机名称需要一个DNS:条目)。
  • 使OpenSSL使用该配置文件。拨打OPENSSL_CONF=/path/to/your/openssl.cnf openssl req ...

这就是说,我不会太担心在CSR中设置任何扩展。任何优秀的CA都应该忽略CSR中设置的任何内容,并且仅在颁发实际证书时设置他们实际验证的内容。他们会很高兴地替换您的主题DN(例如Country,Organization,...)中的任何RDN以及任何扩展名(SAN或密钥用法)。首先,如果申请人按照CSR要求延期申请,那么这将是一种安全风险,因为一些申请人可以真正得到任何东西。其次,这就是他们如何赚取额外的收入,通过收取一定的费用(例如代码签名扩展):他们将确保您只能获得您在证书中支付的费用。不过,我明白,您可能希望将您要求的所有名称都放在您的CSR中,只是为了确保。