生成带subjectAltName的ssl服务端证书【亲测有效】

Chrome浏览器的证书验证规则比Edge和Firefox更严格,如果证书不包含SubjectAltName,Chrome会认为其不安全,所以自签证书时要添加做额外配置来添加SubjectAltName。【这个问题困扰了我两天,尝试过很多网上的方法,都没用,崩溃】

  1. 说明:
    • 证书制作过程在Centos7环境进行,且使用Centos7自带的OpenSSL工具。
    • 不需要生成CA相关文件,直接生成服务端证书。
    • 浏览器需要将生成的server.crt证书安装到【受信人的根证书颁发机构】下。
    • Nginx需要同时配置上server.crt和server.key两个文件。
    • 浏览器还要修改本地C:WindowsSystem32driversetchosts文件,配置证书所对应站点的域名,在浏览器本机的DNS映射。

建议先创建一个空目录,作为证书制作空间,后续所有操作都在该目录下进行。

  1. 首先新建一个小配置文件mySsl.conf,只包含如下内容:
[ req ]
default_bits       = 4096
distinguished_name = req_distinguished_name
req_extensions     = req_ext

[ req_distinguished_name ]
countryName                 = Country Name (2 letter code)
countryName_default         = cn
stateOrProvinceName         = State or Province Name (full name)
stateOrProvinceName_default = sc
localityName                = Locality Name (eg, city)
localityName_default        = cd
organizationName            = Organization Name (eg, company)
organizationName_default    = my
organizationalUnitName            = Organizational Unit Name (eg, section)
organizationalUnitName_default    = as
commonName                  = Common Name (e.g. server FQDN or YOUR name)
commonName_max              = 64
commonName_default          = yang.com

[ req_ext ]
subjectAltName = @alt_names

# 此段落标题的方括号两边【没有空格】,只有同时配有IP和域名,才能在IP和域名访问时都成功识别。
[alt_names]
IP.1    = 192.168.50.62
DNS.1   = yang.com
DNS.2   = yang.net
  1. 生成私钥:
openssl genrsa -out server.key 4096
  1. 生成证书请求文件:

CSR是Certificate Signing Request的英文缩写,即证书请求文件,也就是证书申请者在申请数字证书时由CSP(加密服务提供者)在生成私钥的同时也生成证书请求文件,证书申请者只要把CSR文件提交给证书颁发机构后,证书颁发机构使用其根证书私钥签名就生成了证书公钥文件,也就是颁发给用户的证书。

openssl req -new -sha256 -out server.csr -key server.key -config mySsl.conf 

这里会要求输入一系列参数,可以选择不填直接回车。

  1. 检查证书申请文件内容:
openssl req -text -noout -in server.csr

应该可以看到:
X509v3 Subject Alternative Name:
IP Address:192.168.50.62, yang.com, DNS:yang.com, DNS:yang.net

  1. 利用证书请求文件生成证书,执行如下命令:
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt -extensions req_ext -extfile mySsl.conf
原文地址:https://www.cnblogs.com/JaxYoun/p/12692574.html