研究了好多天
还是没有解决
总是有瑕疵
https 已经完美实现,用的是购买而来的一个普通证书
可是双向认证,似乎要 要求我的 证书提供商帮我生成客户端证书,不过我看过 对方的报价,太贵了,按照客户端数量收费
如果自己生成证书来实现双向认证,不被浏览器信任
我看了一些帖子,有人说 可以 实现用买来的证书做网站 https ,同时可以用自己生成证书来做双向认证的验证,但是并没有细说具体方法,我也在网上找了好久
始终没有找到可行的方案
大家有办法吗
跪谢
1
xuan880 2015-12-26 01:38:07 +08:00 via Android 1
v2ex 上面有过类似帖子,用户证书可以用沃通的免费 email 证书代替。
|
2
ti 2015-12-26 09:52:44 +08:00 1
客户端认证需要浏览器信任????
码农也不是很专业啊。。。 网上一搜一大把。。 经验:客户不需要信任你的自签名证书的 CA ,只需要有你自签名 CA 办法的客户证书和密钥就能完成双向认证。。。 |
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 。 |
4
hqlf6rqieee3 OP @rex1901 谢谢,请问,如果用沃通的 email 证书,那我如何来验证这个是我授权的员工访问的,而不是随意一个人注册的未经我授权的沃通 email 证书 来 访问网站呢
|
5
hqlf6rqieee3 OP @xuan880 谢谢,请问,如果用沃通的 email 证书,那我如何来验证这个是我授权的员工访问的,而不是随意一个人注册的未经我授权的沃通 email 证书 来 访问网站呢
|
6
rex1901 2015-12-26 13:28:48 +08:00 1
@hqlf6rqieee3 $ssl_client_s_dn 这个变量中包含证书的 CN ,可以加在 log_format 里面
|
7
ti 2015-12-26 16:38:59 +08:00 1
@hqlf6rqieee3 所以你需要自签名
|
8
hqlf6rqieee3 OP |
9
hqlf6rqieee3 OP @xuan880
@ti @rex1901 谢谢大家 最终打算,用 沃通 的 email 证书来作为双向认证的客户端证书 公司的域名是 www.baidu.com [假设] 那么,我给每个员工申请一个 [email protected] 的域名邮箱,然后用这个域名邮箱去申请沃通的 email 证书 老王的证书是 [email protected] 老张的证书是 [email protected] 老刘的证书是 [email protected] 然后 在 nginx 里面,获取当前访客的证书信息,如果访客证书使用的邮箱后缀是 baidu.com ,那么就通过,否则不通过 目前我网上搜了下资料,好像 nginx 本身无法做这个判断,但是我感觉 nginx 应该是可以的,但是我不知道如何来实现 我希望 nginx 本身完成这个基本的判断,不希望没有经过授权的人访问 web 的任何信息,所以希望不合格的用户直接被 nginx 挡在门外 所以来此求助各位大神,谢谢 每个回答有意义的朋友我都会帮忙点个 感谢 谢谢大家 |
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
|