求 nginx 双向认证+https 的方案

2015-12-26 00:26:45 +08:00
 hqlf6rqieee3

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

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

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

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

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

跪谢

3231 次点击
所在节点    问与答
10 条回复
xuan880
2015-12-26 01:38:07 +08:00
v2ex 上面有过类似帖子,用户证书可以用沃通的免费 email 证书代替。
ti
2015-12-26 09:52:44 +08:00
客户端认证需要浏览器信任????
码农也不是很专业啊。。。
网上一搜一大把。。
经验:客户不需要信任你的自签名证书的 CA ,只需要有你自签名 CA 办法的客户证书和密钥就能完成双向认证。。。
rex1901
2015-12-26 09:58:13 +08:00
服务器证书:客户端为 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
2015-12-26 12:14:44 +08:00
@rex1901 谢谢,请问,如果用沃通的 email 证书,那我如何来验证这个是我授权的员工访问的,而不是随意一个人注册的未经我授权的沃通 email 证书 来 访问网站呢
hqlf6rqieee3
2015-12-26 12:14:55 +08:00
@xuan880 谢谢,请问,如果用沃通的 email 证书,那我如何来验证这个是我授权的员工访问的,而不是随意一个人注册的未经我授权的沃通 email 证书 来 访问网站呢
rex1901
2015-12-26 13:28:48 +08:00
@hqlf6rqieee3 $ssl_client_s_dn 这个变量中包含证书的 CN ,可以加在 log_format 里面
ti
2015-12-26 16:38:59 +08:00
@hqlf6rqieee3 所以你需要自签名
hqlf6rqieee3
2015-12-26 22:59:36 +08:00
@rex1901 谢谢
@ti 谢谢

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

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

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

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

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

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

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

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

谢谢大家
xuan880
2015-12-27 02:21:40 +08:00
@hqlf6rqieee3 nginx 我也不懂 不过这篇文章介绍了通过证书序列号进行验证的方法。 http://www.cnblogs.com/lwm-1988/archive/2012/04/25/2470195.html

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

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

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

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

© 2021 V2EX