nginx 双向认证的情况下,获取用户登陆时提交的证书,并在 nginx 中鉴权 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hqlf6rqieee3
V2EX    问与答

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

 
  •   hqlf6rqieee3 2015-12-26 23:40:00 +08:00 4242 次点击
    这是一个创建于 3645 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    那么,我给每个员工申请一个 [email protected] 的域名邮箱,然后用这个域名邮箱去申请沃通的 email 证书
    老王的证书是 [email protected]
    老张的证书是 [email protected]
    老刘的证书是 [email protected]

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

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

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

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

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

    谢谢大家

    9 条回复    2015-12-27 11:48:09 +08:00
    yeyeye
        1
    yeyeye  
       2015-12-27 00:53:59 +08:00   1
    楼猪可能误会了,并不是客户端有一个 email 证书就能登录任意开启了双向认证的网站,这个是互相对应的、、

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

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

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

    比如可以通过序列号在数据库中匹配用户,这样就算是相同 CA 的证书也弄混不了,同时可以方便的辨别用户。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3534 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 35ms UTC 04:15 PVG 12:15 LAX 20:15 JFK 23:15
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86