nginx 双向认证的情况下,获取用户登陆时提交的证书,并在 nginx 中鉴权

2015-12-26 23:40:00 +08:00
 hqlf6rqieee3

http://www.v2ex.com/t/246219
这是我上一个求助帖

最终打算,用 沃通 的 email 证书来作为双向认证的客户端证书

公司的域名是 www.baidu.com [假设]

那么,我给每个员工申请一个 ...@baidu.com 的域名邮箱,然后用这个域名邮箱去申请沃通的 email 证书
老王的证书是 laowang@baidu.com
老张的证书是 laozhang@baidu.com
老刘的证书是 laoliu@baidu.com

然后 在 nginx 里面,获取当前访客的证书信息,如果访客证书使用的邮箱后缀是 baidu.com ,那么就通过,否则不通过

我希望 nginx 本身完成这个基本的判断,不希望没有经过授权的人访问 web 的任何信息,所以希望不合格的用户直接被 nginx 挡在门外

目前我网上搜了下资料,好像 nginx 本身无法做这个判断,但是我感觉 nginx 应该是可以的,但是我不知道如何来实现

所以来此求助各位大神,谢谢

每个回答有意义的朋友我都会帮忙点个 感谢

谢谢大家

3804 次点击
所在节点    问与答
9 条回复
yeyeye
2015-12-27 00:53:59 +08:00
楼猪可能误会了,并不是客户端有一个 email 证书就能登录任意开启了双向认证的网站,这个是互相对应的、、

一定要你的服务器,把这个客户端证书加入到服务器的设置里,它才能访问你的网站,否则是连接不上的。也就是无需做什么后缀判断,明白吗
hqlf6rqieee3
2015-12-27 00:57:17 +08:00
@yeyeye 谢谢 比如 我用 admin@baidu.com 的这个邮箱 在 沃通 注册了一个 邮箱证书,那么 ,我应该在服务器上如何做设置呢,我用的是 nginx 谢谢
oott123
2015-12-27 00:58:15 +08:00
一楼说得好像没错
不过楼主的需求也有道理,可以搜索一下 nginx ssl common name
oott123
2015-12-27 00:59:27 +08:00
不对 一楼好像说得有问题 并没有什么相互对应关系的 _(:з」∠)_ 我眼花了
ryd994
2015-12-27 01:22:47 +08:00
我说一个已知有效的简单办法,可能要被楼下喷
自建 CA 给员工签证书,设置 ssl_trusted_certificate 为这个 CA 就行
内部使用而不需要公众信任的话没有问题。前提是 PKI CA 整个一套流程要做齐,特别是 revoke 相关的,私钥千万冷储存
另外,你这个需求其实限制内网访问更方便。员工出差的话就用 VPN ,这才是 VPN 本来的用途。
ryd994
2015-12-27 01:25:50 +08:00
原帖 @rex1901 不是连配置都给出来了么。
用 wosign 的话把 wosign 的根证书作为 ssl_trusted_certificate
ooxxcc
2015-12-27 01:32:15 +08:00
基本就是楼上说的

客户端鉴定服务端用沃通的证书,服务端鉴定客户端用自己生成的 CA 签发的证书

其实可以参考自建 anyconnect 证书登陆什么的
nbndco
2015-12-27 09:26:24 +08:00
你自己生成 CA 自己签证书,客户端验证的证书不需要什么信任不信任的。
服务器的证书和客户端的证书不需要是同一个 CA 。
wdlth
2015-12-27 11:48:09 +08:00
证书认证成功后, Nginx 的 $ssl_client_verify 会变成 "SUCCESS",$ssl_client_s_dn 会变成客户端证书的主题(Subject),$ssl_client_serial 会变成证书的序列号,剩下的你要怎么判断看你了,在 Nginx 或者传到后端处理也行。

比如可以通过序列号在数据库中匹配用户,这样就算是相同 CA 的证书也弄混不了,同时可以方便的辨别用户。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/246375

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX