配置示例:

[ req ]
distinguished_name = req_dn
req_extensions = req_ext
prompt = no
[ req_dn ]
C = BJ
ST = Beijing
L = Beijing City
O = HSNU
OU = CNMC
CN = www.ipaipan.com
emailAddress = root@hs.ntnu.edu. tw
[ req_ext ]
basicConstraints = CA:FALSE
keyUsage = digitalSignature, keyEncipherment
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = www.scriptjc.com
DNS.2 = www.zhuqiyang.com
DNS.3 = www.ipaipan.com
IP.1 = 127.0.0.1

注释:

[ req ]:表示接下来这段设定档是给openssl req用的。

distinguished_name:这边指定了我们产生CSR需要的资讯放在req_dn这一块区域。

req_extensions:这边指定了CSR要用的扩充(extension)放在req_ext这一块区域。

prompt这边设成no ,表示不用互动式输入,直接拿distinguished_name的资料来用就可以。


[ req_dn ]:这边指定的其实就是我们在互动式输入里输入的国家、地区、domain name等等资讯,可以参考上一篇带过的参数。


[ req_ext ]:这边指定的是要用的扩充相关的资讯。

在basicConstraints中我们指定CA:FALSE表示这不是一个CA的cert(非必要)。

在keyUsage中我们指定了密钥用途为数位签名(digitalSignature)、密钥加密(keyEncipherment);根据不同的用途这边可以指定不同的值,可以参考OpenSSL文件或者直接看RFC 3280 Section 4.2.1.3

在subjectAltName中我们指定了SAN设定在alt_names这一区;当然也可以全部用成一行写在这边,不过这样看起来很累XD。


在[ alt_names ]:中,我们使用DNS.#来指定每个domain;当然这块能放的其实不只有domain ,可以参考相关文件。


可以使用通用域名或网段:

[ alt_names ]
DNS.1               = example.com
DNS.2               = *.example.com
IP.1                = 192.168.0.0/16
IP.2                = 10.0.0.0/8