1、创建CA证书配置 CA.cnf 文件
cA.cnf是客户端证书的配置文件和默认信息,如果提前配置好在生成证书的时候可以直接回车使用默认值。
CA.cnf文件
[ req ]
distinguished_name = req_distinguished_name
x509_extensions = root_ca
[ req_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = CN
countryName_min = 2
countryName_max = 2
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = Beijing
localityName = Locality Name (eg, city)
localityName_default = Beijing
0.organizationName = Organization Name (eg, company)
0.organizationName_default = ChannelSoft
organizationalUnitName = Organizational Unit Name (eg, section)
organizationalUnitName_default = QCTEAM
commonName = Common Name (eg, fully qualified host name)
commonName_default = *.open.com
commonName_max = 64
emailAddress = Email Address
emailAddress_default = CA@dev.com
emailAddress_max = 64
[ root_ca ]
basicConstraints = critical, CA:true
2、创建ssl证书 server.cnf 文件
server.cnf是服务端证书的配置文件和默认信息,如果提前配置好在生成证书的时候可以直接回车使用默认值。
server.cnf 文件
distinguished_name = req_distinguished_name
[ req_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = CN
countryName_min = 2
countryName_max = 2
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = Beijing
localityName = Locality Name (eg, city)
localityName_default = Beijing
0.organizationName = Organization Name (eg, company)
0.organizationName_default = ChannelSoft Server
organizationalUnitName = Organizational Unit Name (eg, section)
organizationalUnitName_default = QCTEAM Server
commonName = Common Name (eg, fully qualified host name)
commonName_default = *.open.com
commonName_max = 64
emailAddress = Email Address
emailAddress_default = CA@dev.com
emailAddress_max = 64
3、创建ssl证书subjectAltName描述文件 SAN.ext
配置证书对应的域名或IP,一个证书可以对应多个域名或IP。
DNS可以使用通配符配置一级域名,而IP无法使用通配符,必须配置精确的IP地址。
SAN.ext
subjectAltName = @alt_names
extendedKeyUsage = serverAuth
[alt_names]
DNS.1 = *.open.com
IP.1 = 10.130.77.39
IP.2 = 10.130.77.40
新版本的浏览器如 Chrome、Firefox 等在通过 HTTPS 访问 web 网站时,会对网站证书中的 subjectAltName 项进行检查,如果未包含该项或该项有问题,Chrome 浏览器会报告 NET::ERR_CERT_COMMON_NAME_INVALID 错误,并提示“安全证书没有指定主题备用名称”。
对于一张 TLS 证书,如果这张证书将被用于多个网址,则应在 Subject 子项中 CommonName 部分放入一个最重要的URI,并且只能包含一个 URI。可以将所有的 URI 放置到 subjectAltName(即:SAN)中,根据 CA/Browser Forums(即:CA/浏览器论坛国际组织)的规定,在 Subject 子项 CommonName 部分出现的 URI 必须在 SAN 中再次出现,而且通常出现在“SAN DNS Name=…”列表中第一个元素的位置。浏览器会检查当前访问的网址是否与证书中 SAN 扩展项里包含的 DNS Name 列表中的某一个网址相符,如果不符就会报错。
4、创建CA+SSL证书
# 生成CA证书
openssl req -x509 -newkey rsa:4096 -out CA.cer -outform PEM -keyout CA.pvk -days 3650 -verbose -config CA.cnf -nodes -sha256
# 生成证书请求文件
openssl req -newkey rsa:4096 -keyout server.pvk -out server.req -config server.cnf -sha256 -nodes
#生成证书
openssl x509 -req -CA CA.cer -CAkey CA.pvk -in server.req -out server.cer -days 3650 -extfile SAN.ext -sha256 -set_serial 0x1212
评论区