原文地址:openssl颁发包含主题替代名的证书–SAN – 无敌牛
欢迎参观我的个人博客:无敌牛 – 技术/著作/典籍/分享等
在 X.509 证书中,commonName
(CN)字段只能有一个值。如果让证书支持多个域名和IP地址,需要用到主题替代名称–subjectAltName。
第一步,制作CA根证书
和往期文章:自签名证书 – 无敌牛 中的1.1和1.2步骤是一样。操作如下图:
第二步:颁发证书
需要用到5个文件:
1、第一步产生的CA私钥
2、第一步产生的CA根证书
3、服务端需要创建一个私钥,一般扩展名为 .key
4、服务端需要创建证书配置文件,一般扩展名为 .csr
5、服务端用自己的私钥和配置文件出创建一个证书请求文件,一般扩展名为 .crt
2.1 创建服务端的私钥
指令:openssl genrsa -out private.key 2048 和第一步创建私钥的方法是一样的
2.2 创建证书配置文件
命名为:csr.conf
default_bits = 2048
prompt = no
default_md = sha256
distinguished_name = req_distinguished_name
req_extensions = v3_req
[req_distinguished_name]
countryName = CN
stateOrProvinceName = Shandong
localityName = Qingdao
organizationName = madbull
organizationalUnitName = IT
commonName = node1
emailAddress = [email protected]
[v3_req]
subjectAltName = @alt_names
[alt_names]
DNS.1 = node1
DNS.2 = madbull.site
DNS.3 = localhost
IP.1 = 127.0.0.1
IP.2 = 192.168.1.123
其中 commonName 和 alt_names的配置 根据自己的实际情况填写 域名和主机名。
配置解释:
default_bits: 设置默认的密钥长度为 2048 位。
prompt: 设置为 no,表示在生成 CSR 时不提示用户输入信息,而是使用配置文件中的默认值。
default_md: 设置默认的消息摘要算法为 SHA-256。
distinguished_name: 指向 [req_distinguished_name] 段,定义了证书请求的基本信息。
req_extensions: 指向 [v3_req] 段,定义了证书请求中的扩展字段。
subjectAltName: 指向 [alt_names] 段
2.3 生成证书请求文件
指令:openssl req -new -key private.key -out req.csr -config csr.conf
注意,这里多了指定配置文件 -config csr.conf
可用:openssl req -in req.csr -noout -text 查看请求证书文件内容。
2.4 颁发证书
指令:openssl x509 -req -in req.csr -CA root-ca.crt -CAkey root-ca.key -CAcreateserial -out public.crt -days 10240 -sha256 -extensions v3_req -extfile csr.conf
注意,这里多了指定扩展段名称和配置文件 -extensions v3_req -extfile csr.conf。
可用:openssl x509 -in public.crt -noout -text 查看证书内容。
自此,当前目录下有7个文件,对于服务端只需要私钥和证书就可以了。下面分别介绍一下这些都是什么文件:
csr.conf: 证书配置文件
private.key: 服务端私钥
public.crt: 服务端证书
req.csr: 服务端生成的证书请求文件
root-ca.crt: CA根的证书
root-ca.key: CA根的私钥
root-ca.srl: 上次颁发证书用到的证书编号