V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
vibbow
V2EX  ›  信息安全

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

  •  
  •   vibbow · 2014-10-24 05:13:21 +08:00 · 4238 次点击
    这是一个创建于 3683 天前的主题,其中的信息可能已经有所发展或是发生改变。
    使用的是飞天诚信的 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
    15 条回复    2014-10-24 16:59:11 +08:00
    Vkme
        1
    Vkme  
       2014-10-24 05:25:23 +08:00
    一点进去就要我确认我本地的证书,但是没忍住还是确定了
    o(︶︿︶)o
    jybox
        2
    jybox  
       2014-10-24 06:10:00 +08:00
    @Vkme 除了暴露证书里的邮箱以及可能的姓名之外,是没有什么风险的
    vibbow
        3
    vibbow  
    OP
       2014-10-24 06:23:02 +08:00
    @Vkme @jybox 除了默认的Apache访问日志,没有其他任何的记录措施。
    jybox
        4
    jybox  
       2014-10-24 06:32:48 +08:00
    @vibbow 我说的是技术上,其实 SSL 双向认证是一个很好的技术
    vibbow
        5
    vibbow  
    OP
       2014-10-24 07:37:10 +08:00
    @jybox 是的,唯一的缺点就是SSL握手失败后无法显示用户友好的错误信息......
    imnpc
        6
    imnpc  
       2014-10-24 07:49:11 +08:00
    这个不错 配置复杂吗?
    jybox
        7
    jybox  
       2014-10-24 08:05:51 +08:00
    @imnpc Nginx 上设置 ssl_client_certificate, 然后把 $ssl_client_* 的一系列变量加到 HTTP Header 里,然后在应用后端就可以直接读到客户端的证书信息了。
    vibbow
        8
    vibbow  
    OP
       2014-10-24 08:11:02 +08:00
    @jybox 为什么Nginx需要这么纠结......
    Apache就是一句话的事情............
    而且也可以不传输证书信息到应用后端,Apache自己就可以处理......
    zjgood
        9
    zjgood  
       2014-10-24 08:20:53 +08:00 via Android
    @vibbow Apache怎么搞。楼主可不可以把折腾笔记公开?
    rrfeng
        10
    rrfeng  
       2014-10-24 08:37:45 +08:00
    我们重要的业务都是用 Ukey 登录的

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

    PS:国产颁发商的全部拉黑了 mac 10.10 chrome
    vibbow
        15
    vibbow  
    OP
       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)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   967 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 20:19 · PVG 04:19 · LAX 12:19 · JFK 15:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.