Nginx 配置客户端证书认证

最近,有个内部服务需要使用公网上,担心被暴力刷API破解。

正好看到有个双向证书认证的方案,挺符合需求,踩了不少坑,简单记录下

生成证书

info:仅需要生成自签名客户端证书即可,服务端证书就用免费的在线申请的即可,不会有信任问题

可以参考微软官方文档:

生成自签名客户端证书

这里我就用openssl,来生成客户端证书

生成自签名客户端证书生成自签名客户端证书

# 生成key
openssl genrsa -out client.key 1024
# 生成csr
openssl req -new -out client.csr -key client.key

# 按提示输入信息
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:cn # 国家
State or Province Name (full name) [Some-State]:tj #区域或省
Locality Name (eg, city) []:tj # 城市
Organization Name (eg, company) [Internet Widgits Pty Ltd]:idzd.top #组织名称(随意)
Organizational Unit Name (eg, section) []:idzd.top # 部门名称(随意)
Common Name (e.g. server FQDN or YOUR name) []:ding #通用名称(服务端证书需要填写域名,客户端的随意,但是不能重复)
Email Address []: # 邮箱(随意)

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: #密码(选填)
An optional company name []:#公司名(选填)
# 自签证书(3650天)
openssl x509 -req -in client.csr -out client.crt -signkey client.key -CAcreateserial -days 3650

配置 Nginx

上传 client.crt 到服务器上

Nginx 配置节添加下面的内容

# 客户端公钥证书
ssl_client_certificate <上传的 client.crt 证书路径>;
# 开启客户端证书验证
ssl_verify_client on;

Nginx 配置Nginx 配置

安装证书

为了方便用户使用,我们先把证书转换为p12证书

# 转换为p12证书
openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12

转换为p12证书转换为p12证书

Windows安装证书

  1. 双击证书文件以进行安装。 将“存储位置”保留为“当前用户”,并选择“下一步” 。
  2. 在“要导入的文件”页上,不要进行任何更改。 选择“下一步”。
  3. 在“私钥保护”页上,输入证书的密码,或验证安全主体是否正确,并选择“下一步” 。
  4. 在“证书存储”页上,保留默认位置,并选择“下一步” 。
  5. 选择“完成”。 在证书安装的“安全警告”上,选择“是” 。 你可以放心地对此安全警告选择“是”,因为你生成了证书。
  6. 现已成功导入证书。

windows 安装证书windows 安装证书

MacOS安装证书

  1. 双击该证书。 此时系统会要求你输入密码,证书会自动安装,否则会出现“添加证书”框。 在“添加证书”框中,单击“添加”以开始安装。
  2. 从下拉列表中选择“登录”。
  3. 输入在导出客户端证书时创建的密码。 该密码用于保护证书的私钥。 单击 “确定” 。
  4. 单击“添加”以添加证书。
  5. 若要查看添加的证书,请打开“钥匙串访问”应用程序并导航到“证书”选项卡。

证书安装完成证书安装完成

使用证书认证

然后重启浏览器,访问站点,选择证书即可。

使用证书认证使用证书认证

最后修改于:2024年04月30日 17:31

添加新评论

* 人工审核评论,通过后即可正常显示。《隐私政策》