搞定一黑科技:基于 USB 数字证书的网站双向 SSL 认证

2014-10-24 05:13:21 +08:00
 vibbow
使用的是飞天诚信的 ePass 3003 Auto
实测完美兼容IE / Firefox / Chrome

测试网址: https://box.vsean.net/
(你的浏览器需要安装有可信证书发行商颁发的证书才可以访问,否则会提示SSL协商失败)

效果图如下:
IE 11:
选择证书: https://pic.vsean.net/di/S51P/ie1.png
输入证书密码: https://pic.vsean.net/di/74TH/ie2.png
(输入证书密码时和国内网银效果一样,其他所有窗口隐藏,无法截图)

Firefox:
选择证书: https://pic.vsean.net/di/LL7H/ff1.png
输入证书密码: https://pic.vsean.net/di/PHYU/ff2.png

Chrome:
选择证书: https://pic.vsean.net/di/Z6U7/cr1.png
Chrome数字证书密码时效果和IE一样


最终访问效果:
https://pic.vsean.net/di/BHUH/result.png
4261 次点击
所在节点    信息安全
15 条回复
Vkme
2014-10-24 05:25:23 +08:00
一点进去就要我确认我本地的证书,但是没忍住还是确定了
o(︶︿︶)o
jybox
2014-10-24 06:10:00 +08:00
@Vkme 除了暴露证书里的邮箱以及可能的姓名之外,是没有什么风险的
vibbow
2014-10-24 06:23:02 +08:00
@Vkme @jybox 除了默认的Apache访问日志,没有其他任何的记录措施。
jybox
2014-10-24 06:32:48 +08:00
@vibbow 我说的是技术上,其实 SSL 双向认证是一个很好的技术
vibbow
2014-10-24 07:37:10 +08:00
@jybox 是的,唯一的缺点就是SSL握手失败后无法显示用户友好的错误信息......
imnpc
2014-10-24 07:49:11 +08:00
这个不错 配置复杂吗?
jybox
2014-10-24 08:05:51 +08:00
@imnpc Nginx 上设置 ssl_client_certificate, 然后把 $ssl_client_* 的一系列变量加到 HTTP Header 里,然后在应用后端就可以直接读到客户端的证书信息了。
vibbow
2014-10-24 08:11:02 +08:00
@jybox 为什么Nginx需要这么纠结......
Apache就是一句话的事情............
而且也可以不传输证书信息到应用后端,Apache自己就可以处理......
zjgood
2014-10-24 08:20:53 +08:00
@vibbow Apache怎么搞。楼主可不可以把折腾笔记公开?
rrfeng
2014-10-24 08:37:45 +08:00
我们重要的业务都是用 Ukey 登录的

Nginx 里不就是一句话的事
ssl_client_certificate
哪里复杂了
而且 Nginx 没有证书的话默认是 400 错误,很容易改成自定义的页面啊
lshero
2014-10-24 09:32:12 +08:00
淘宝上随便买的几十块一个的数字证书 只给activex插件 chrome和FF 无解
imnpc
2014-10-24 09:37:08 +08:00
@vibbow 请问已有数字证书 已有客户端证书 自己新建的虚拟主机 如果配置一个后台目录 admin888 双向认证呢 网上的都不全...
est
2014-10-24 09:38:46 +08:00
这有什么黑科技的。。。。。。。客户端证书嘛。。。。。。玩过StartSSL的应该都见过。
typcn
2014-10-24 09:39:39 +08:00
我的浏览器上有很多证书但是我打开直接提示 ERR_SSL_PROTOCOL_ERROR

PS:国产颁发商的全部拉黑了 mac 10.10 chrome
vibbow
2014-10-24 16:59:11 +08:00
@rrfeng 如果要显示自定义错误信息,那么就只能在后端应用(比如说PHP)处验证证书有效性了。
相对于在Apache层面要麻烦一些,毕竟Apache可以指向系统的SSL证书库,然后读取所有的系统证书。

@typcn 查了一下,Ubuntu的证书库是用的Mozilla的。如果你的客户端证书CA不是下列CA中的任何一个,那么就会被Apache拒绝。
https://www.mozilla.org/en-US/about/governance/policies/security-group/certs/included/
(需翻墙,调用了Google Doc)

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

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

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

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

© 2021 V2EX