TLS初探(4)多域名证书

       在“TLS初探(2)证书简介”中提过,如想使用泛域名,可在Subject DN(Distingushed Name)的CN(Common Name)中使用*通配符,例如*.abc.com。而如果想使用同一证书匹配多个域名,可以使用X.509中扩展字段的Subject Alternative Name字段来进行多域名支持。

       为此如果想支持多域名证书,首先就要想办法在CSR证书请求中增加对X.509 v3扩展字段的支持,默认的openssl.cnf配置文件中并未开启支持;但是个人推荐还是不要修改默认的openssl.cnf配置,而是拷贝一份至CA证书同级目录下,从而确保对每个CA证书制定请求和签发规则。


(一)制作多域名证书请求文件(CSR)

首先找到openssl.cnf中“[ req ]”配置,并打开其下“req_extenstions = v3_req”配置,如下所示:

[ req ]
......
req_extensions = v3_req

表示对于证书签发请求文件,启用req_extensions,并且扩展字段参照“v3_req”配置,接着同样找到“[ v3_req ]”,从而在其下添加Subject Alternative Name扩展,如下所示:

[ v3_req ]
......
subjectAltName = @alternative_names
......
[alternative_names]

DNS.1 = *.example.com
DNS.2 = *.jm.com

其中@alternavtive_names表明引用"alternative_names"作为扩展域名配置,接下来即可使用指定配置文件生成CSR:

openssl req -new -key server.key -out server.csr -config openssl.cnf

生成的CSR中可以确认已添加Subject Alternative Name,如下图所示:


(二)利用CSR签发多域名证书

       生成的携带Subject Alternative Name的CSR文件之后,理想情况下应该就可直接生成携带Subject Alternative Name的证书文件。但是如果直接利用“openssl ca”命令生成证书文件,你会发现,Subject Alternative Name并未生成至证书之中。

       还是要修改“openssl.cnf”配置,需要在签发证书时,将CSR中的扩展字段复制到证书中去,需要打开copy_extensions配置,如下所示:

扫描二维码关注公众号,回复: 9272116 查看本文章
[ CA_default ]
......
copy_extensions = copy

      如此,在签发证书时,即会将CSR文件中的扩展字段复制至证书文件中,具体命令如下:

openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -days 3650 -config openssl.cnf

     查看生成的证书可确认Subject Alternative Name已被签发至证书中:

       需要注意的是“[ v3_ca ]”的配置会覆盖CSR中的相同字段。


补充说明:如果希望签发的证书也作为CA证书可用于后续签发证书,可在“[ usr_cert ]”下设置"basicConstraints=CA:TRUE"。

发布了42 篇原创文章 · 获赞 9 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/jjxojm/article/details/81293046
今日推荐