nginx 配置 ssl 双向认证
文章目录
Web two-way ssl
说明
- nginx 需正常支持 https
- nginx 使用 ssl_client_certificate 配置用于验证客户端身份的 ca
- 使用 ca 签发子证书,转换格式为 linux 可直接读取的 pfx 格式
- 将证书导入允许访问的主机中,主机访问网站时选择证书文件,如果认证成功,可正常访问
生成证书
签发 CA
- Ubuntu
|
|
- Centos
|
|
签发验证使用的证书
- 生成证书申请
|
|
-
签发证书
- Centos:
1
openssl x509 -req -days 35600 -extfile <(printf "subjectAltName=DNS:${DOMAIN}") -in sub_certs/${DOMAIN}.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out sub_certs/${DOMAIN}.crt
- Ubuntu 20+ openssl 不支持使用 -extfile < print 的方式申请证书,需通过写入文件并指定文件的方式签发证书
1 2
echo "subjectAltName=DNS:$DOMAIN" > altsubj.ext openssl x509 -req -days 35600 -extfile altsubj.ext -in sub_certs/${DOMAIN}.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out sub_certs/${DOMAIN}.crt
-
更改证书格式,从 crt 更改为 pfx
|
|
Nginx 配置
- 将 ca 拷贝至 nginx certs 目录
|
|
- nginx server 内配置 ssl_client_certificate
|
|
- reload
|
|
windows 客户端安装证书
- 双击客户端证书 ${DOMAIN}.pfx 弹出证书导入向导,按照提示,下一步直至完成即可。
验证
- 安装好证书后,浏览器第一次访问此域名时,会弹窗选择证书
- 若选择错证书或未选择证书,可能造成无法访问的情况,这时需要将浏览器完全退出(kill掉所有进程)才可以进行更换
文章作者 Xiang
上次更新 2022-12-13