有朋友了解如何部署数字证书的双向认证吗

2015-11-19 15:12:05 +08:00
 QQ1685425675

网站是用来远程办公的

所以 希望只允许内部人访问

虽然有了密码,但还是希望让系统更加牢固

目前用的 startSSL 的免费证书一年

可以防止简单拦截抓包

现在想实现双向认证

但是我在实际测试中,发现

当我自己生成证书做双向认证的时候,浏览器的锁就不是绿色了,因为我自己生成的 ca ,不被本地信任,

没有启用双向认证的时候,用的 startSSL 的证书,浏览器的锁是绿色的

有没有办法,让浏览器的锁是绿色的,并且支持双向认证,并且不用把自己生产的 CA 加入本地信任呢

我的环境是 linux nginx

求指点

2944 次点击
所在节点    问与答
17 条回复
wdlth
2015-11-19 16:09:18 +08:00
在保证安全的前提下,可以把域名证书导入系统,因为域名证书也可以作为客户端身份验证。

设置好验证深度的话,用同一个 CA 颁发的不同域名证书也可以,我测试用 SHA-1 的证书也可以登录 SHA-256 加密的,根证书都是 GlobalSign 的。
ooxxcc
2015-11-19 16:11:36 +08:00
双向认证可以用两套证书的

客户端认证服务器使用 startssl 的那一套
服务器认证客户端使用自建的一套

没在 nginx 里试过, anyconnect 里面是可以这样的, stunnel 也可以
yeyeye
2015-11-19 22:04:32 +08:00
我想请教一下

服务器用可信 CA 签署证书 客户端用自签名签署 会出现楼主这样的情况吗?(或者楼主就是这样做的?)


今天刚在另一个主题回复了,客户端证书你可以去沃通获得免费 3 年的电子邮件证书,应该每个都可以用来做客户端部分的验证。
QQ1685425675
2015-11-19 22:50:21 +08:00
@yeyeye 谢谢 你的意思是让公司的每个员工都去申请 沃通 的电子邮件证书吗,那如此的话,我就需要把 每个员工的 证书都存在服务器的信任列表里面,不然的话 系统无法识别这个人是不是经过授权的

不过这样的话,会不会步骤就比较麻烦了,不知道 nginx 上是否有现成的方案
QQ1685425675
2015-11-19 22:55:10 +08:00
@wdlth 谢谢
QQ1685425675
2015-11-19 22:55:18 +08:00
@ooxxcc 谢谢
yeyeye
2015-11-19 22:59:08 +08:00
@QQ1685425675 我看了下别人的教程 应该是客户端证书的公钥提取出来吧,因为比较懒,所以没做过实验。关于用邮件证书去做验证也是很久之前听别人说的。

但是这样确实实现了无需自己去搞什么自签名,都在完全信任的体系里。

当然啦,自签名发放证书确实很方便
wdlth
2015-11-19 23:50:29 +08:00
@QQ1685425675 WoSign 的证书做了 StartCom 的交叉验证,我认为 WoSign 的 Email 证书应该可以用于 StartCom 的客户端验证。

你可以试试,在你的 https 站点的配置文件中 server 段加上:

ssl_client_certificate /etc/ssl/ca-certs.pem;( StartCom 证书+WoSign 中间证书)
ssl_verify_depth 3;(不行改 4 试试)
ssl_verify_client optional;
HowardMei
2015-11-20 00:00:09 +08:00
为啥不直接 VPN?
xenme
2015-11-20 00:10:23 +08:00
全部自签,反正自己用,没证书直接拒绝了。再发个人证书
datocp
2015-11-20 00:14:55 +08:00
倒是经常用 stunnel ,按实例的话它都能把 google tcp 53 加密到本地,不知道 tcp 80 是否可行。然后它的 verify 3 就是用来对客户端证书进行认证用的,只是看起来还是不如浏览器方便。
QQ1685425675
2015-11-20 12:02:12 +08:00
@wdlth 那如此的话,是不是所有人,申请的 wosign 的 email 证书都可以登陆我公司的站点呀,应该有个地方可以设置一个判断,你让符合规则的 email 进入, 或者说 0-0

用我们公司的域名邮箱,分配给员工,然后用域名邮箱来给员工申请证书,那如此的话,在 ngxin 里面,如何判断这个证书 email 里面的网址后缀呢,只有网址后缀是我们公司的网址,那么就让他通过,否则不通过
QQ1685425675
2015-11-20 12:02:56 +08:00
@HowardMei 感觉小公司用 vpn 不太好,成本比双向认证要高
QQ1685425675
2015-11-20 12:03:45 +08:00
@xenme 也想过全部自签,但是总感觉可能会留下安全隐患,怕把 ca 密钥弄丢什么的
wdlth
2015-11-20 12:28:17 +08:00
@QQ1685425675 当然要进行判断,从客户端证书中取得信息,不然服务器怎么知道证书是谁的?

$ssl_client_serial 证书序列号、$ssl_client_s_dn 证书的使用者。
wdlth
2015-11-20 12:31:12 +08:00
这些数值是 Nginx 的,不是 PHP 的。可以用 fastcgi_param 传到 PHP ,在那里判断,也可以在 Nginx 里面判断,看你怎么实现。
xenme
2015-11-20 15:48:50 +08:00
@QQ1685425675 CA 签完证书就离线好了。或者你们就用 two-factor 也行。全部采用商业方案。

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

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

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

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

© 2021 V2EX