Nginx之多级证书的双向认证

1 准备

请参考我之前的博客准备好三级证书

2 Nginx配置文件

将生成的证书,组成证书链(三级证书链,从上至下顺序,最上面为第三级证书)

server-chain.pem

rootca->secondca->server

client-chain.pem:

rootca->clientca

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
server {
ssl on;
ssl_certificate /etc/nginx/ssl/server-chain.pem;
ssl_certificate_key /etc/nginx/ssl/server.key;
ssl_verify_client on;
ssl_client_certificate /etc/nginx/ssl/client-chain.pem;
ssl_verify_depth 5;
server_name test.com;
listen 443 default_server deferred;

error_log /var/log/nginx/ssl_auth_error.log debug;
access_log /var/log/nginx/ssl_auth_access.log;

location / {
#proxy_pass http://test;
}
}

因为要使用双向认证,所以需要生成客户端证书,因为客户端证书链是由rootca和clientca组成,所以客户端证书可以由这两个证书中的任意一个去生成。

这里我们用clientca去生成了一个device的证书,分别是device.pem和device.key

3 测试方法

3.1 curl

curl命令有可能会因为一些环境而导致执行结果不同,不建议使用curl去测试

1
curl --cacert trusted-chain.pem --cert device.pem --key device.key https://test.com

trusted-chain.pem

rootca->secondca

3.2 openssl s_client

1
2
3
openssl s_client -connect test.com:443 -cert device.pem -key device.key -CAfile trusted-chain.pem
.....
GET /

3.3 Postman

--------------------本文结束,感谢您的阅读--------------------

本文标题:Nginx之多级证书的双向认证

文章作者:弓昭

发布时间:2020年07月02日 - 23:35

最后更新:2020年07月02日 - 23:49

原始链接:https://gongzhao1.gitee.io/Nginx之多级证书的双向认证/

联系邮箱:gongzhao1@foxmail.com