求 nginx 双向认证+https 的方案 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hqlf6rqieee3
V2EX    问与答

求 nginx 双向认证+https 的方案

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

    研究了好多天
    还是没有解决

    总是有瑕疵
    https 已经完美实现,用的是购买而来的一个普通证书
    可是双向认证,似乎要 要求我的 证书提供商帮我生成客户端证书,不过我看过 对方的报价,太贵了,按照客户端数量收费

    如果自己生成证书来实现双向认证,不被浏览器信任

    我看了一些帖子,有人说 可以 实现用买来的证书做网站 https ,同时可以用自己生成证书来做双向认证的验证,但是并没有细说具体方法,我也在网上找了好久

    始终没有找到可行的方案
    大家有办法吗

    跪谢

    10 条回复    2015-12-27 02:21:40 +08:00
    xuan880
        1
    xuan880  
       2015-12-26 01:38:07 +08:00 via Android   1
    v2ex 上面有过类似帖子,用户证书可以用沃通的免费 email 证书代替。
    ti
        2
    ti  
       2015-12-26 09:52:44 +08:00   1
    客户端认证需要浏览器信任????
    码农也不是很专业啊。。。
    网上一搜一大把。。
    经验:客户不需要信任你的自签名证书的 CA ,只需要有你自签名 CA 办法的客户证书和密钥就能完成双向认证。。。
    rex1901
        3
    rex1901  
       2015-12-26 09:58:13 +08:00   2
    服务器证书:客户端为 CA Root 证书,服务器证书+私匙,如果服务器证书不是客户端的 CA 证书颁发,即不信任,所以必须购买。
    客户端证书:客户端为证书+私匙,服务器为 CA Root ,这个 CA Root 自己生成即可,也就是说客户端证书可以用自己生成的 CA Root 签发,想怎么搞都行。
    只是 nginx 中几行设置而已:
    ssl_verify_client on;
    ssl_verify_depth 2;
    ssl_client_certificate /your/Ca/Root.crt;
    proxy_set_header X-SSL-Client-Cert $ssl_client_cert;

    当然也可以用沃通的免费 email 证书,也就是说, ssl_client_certificate 要设置成沃通 email 的 Root 。
    hqlf6rqieee3
        4
    hqlf6rqieee3  
    OP
       2015-12-26 12:14:44 +08:00
    @rex1901 谢谢,请问,如果用沃通的 email 证书,那我如何来验证这个是我授权的员工访问的,而不是随意一个人注册的未经我授权的沃通 email 证书 来 访问网站呢
    hqlf6rqieee3
        5
    hqlf6rqieee3  
    OP
       2015-12-26 12:14:55 +08:00
    @xuan880 谢谢,请问,如果用沃通的 email 证书,那我如何来验证这个是我授权的员工访问的,而不是随意一个人注册的未经我授权的沃通 email 证书 来 访问网站呢
    rex1901
        6
    rex1901  
       2015-12-26 13:28:48 +08:00   1
    @hqlf6rqieee3 $ssl_client_s_dn 这个变量中包含证书的 CN ,可以加在 log_format 里面
    ti
        7
    ti  
       2015-12-26 16:38:59 +08:00   1
    @hqlf6rqieee3 所以你需要自签名
    hqlf6rqieee3
        8
    hqlf6rqieee3  
    OP
       2015-12-26 22:59:36 +08:00
    @rex1901 谢谢
    @ti 谢谢

    那我 如果用沃通 email 证书,用公司域名邮箱来注册是不是就好了呢,给每个员工一个 公司的域名邮箱,然后 $ssl_client_s_dn 里面判断 证书的域名是不是公司域名,这样是不是就可以了呢
    hqlf6rqieee3
        9
    hqlf6rqieee3  
    OP
       2015-12-26 23:41:41 +08:00
    @xuan880
    @ti
    @rex1901
    谢谢大家
    最终打算,用 沃通 的 email 证书来作为双向认证的客户端证书

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

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

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

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

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

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

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

    谢谢大家
    xuan880
        10
    xuan880  
       2015-12-27 02:21:40 +08:00 via Android
    @hqlf6rqieee3 nginx 我也不懂 不过这篇文章介绍了通过证书序列号进行验证的方法。 http://www.cnblogs.com/lwm-1988/archive/2012/04/25/2470195.html
    关于     帮助文档     自助推广系统     a href="https://blog.v2ex.com/" class="dark" target="_blank">博客     API     FAQ     Solana     3195 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 11:36 PVG 19:36 LAX 03:36 JFK 06:36
    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