侧边栏壁纸
博主头像
zyixin

当你觉得为时已晚的时候,恰恰是最早的时候

  • 累计撰写 64 篇文章
  • 累计创建 0 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

生成CA+SSL自签名证书

zyixin
2022-12-05 / 0 评论 / 0 点赞 / 1,911 阅读 / 819 字
温馨提示:
本文最后更新于 2022-12-05,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

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

CA证书截图

将生成的CA.cer导入到PC端“系统受信任的根证书颁发机构”中。

客户端证书导入

server证书配置到应用服务器的nginx中。

服务端证书添加

0

评论区