V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
Vegetable
V2EX  ›  NGINX

关于双向 HTTPS 的一些疑问

  •  
  •   Vegetable · 2019-01-18 23:42:39 +08:00 · 3014 次点击
    这是一个创建于 2118 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近有个需求,本来一套内网的 WEB 系统准备上云,系统内信息敏感,需要禁止员工在未被允许的设备登录.这两个需求就有一点矛盾了.

    设想

    我一开始是想过公司内网+加一个中转服务器,不过还是免不了要一个本地服务器.现在我的想法是使用浏览器和 Nginx 双向 HTTPS 来保证只有安装了客户端证书的浏览器能够访问服务.证书由管理人员来安装.

    疑问

    今天着手验证,但是涉及到签发各种 CA 证书 C/S 证书,都是第一次弄,耽误了一些时间做了一半就下班回家了,想了一下还是问一下大佬们:

    • 这种方案是否可行?
    • XHR 请求能处理客户端证书的问题吗?

    今天搞证书搞得脑壳疼,加密相关的知识有点弱,懵懵懂懂的.真不知道 OpenSSL 这玩意我有该仔细研究一下还是 copy 命令完事儿...

    第 1 条附言  ·  2019-01-19 01:25:17 +08:00
    我说的是双向验证证书,同一个 CA 证书签发的服务器证书和客户端证书
    10 条回复    2019-01-19 10:27:08 +08:00
    Judoon
        1
    Judoon  
       2019-01-19 00:33:51 +08:00 via Android
    证书不是可以提出来拿到另一个设备上自己安装?
    lhx2008
        2
    lhx2008  
       2019-01-19 00:38:40 +08:00 via Android
    好像不行,公网仍然是暴露给第三方的,可以无密码访问,可能要建一个有密码的信道
    msg7086
        3
    msg7086  
       2019-01-19 00:42:52 +08:00
    HTTPS 当然是双向的。你说的双向是双向证书验证吧。
    Vegetable
        4
    Vegetable  
    OP
       2019-01-19 01:24:35 +08:00
    @msg7086
    @lhx2008
    是双向证书验证,客户端没证书会 400 那种

    @Judoon
    我看了一下客户端证书安装设置了私钥不可导出的话,导出的时候就只能导出 ca 证书,不能作为客户端证书导入了,我也不太懂,感觉不保险的样子.
    msg7086
        5
    msg7086  
       2019-01-19 01:35:35 +08:00
    双向验证证书不需要同一个 CA 签发服务器证书。
    私钥不可导出的话,哪里不保险来着?
    Judoon
        6
    Judoon  
       2019-01-19 01:36:27 +08:00 via Android
    @Vegetable 打个比方是 MacOS,用 time machine 备份了拿到其他机器去恢复,不是照样能用。你这个感觉只能识别硬件指纹之类的然后云上入库,每次登录识别一下。参考 sslvpn 那玩意
    TimePPT
        7
    TimePPT  
       2019-01-19 08:06:00 +08:00 via iPhone
    内网环境+机器 MAC 地址白名单+IP 指定分配+员工帐号登录不就得了。
    TimePPT
        8
    TimePPT  
       2019-01-19 08:09:02 +08:00 via iPhone
    内网的公网访问加一个员工帐号登录的 2FA 动态密码就行了,默认一个用户线上最多 3 台设备,超额提醒,需在内网环境解绑。
    Citrus
        9
    Citrus  
       2019-01-19 09:07:35 +08:00 via iPhone
    一定程度上可以,但是实际设备上的证书也是可以导出到别的机器上的。
    如果要完全不能导出,那就每个员工配一个类似 U 盾的硬件证书,最安全。
    find456789
        10
    find456789  
       2019-01-19 10:27:08 +08:00
    https 访问,你可以用 let encrypt,

    双向认证 ,你可以自己生成一个 ca,然后签个证书,

    如果对方安装了你的证书,访问的时候,浏览器就会弹出提示,让对方选择用哪个证书登陆

    如果对方没有安装证书,浏览器就会报错, 啥都看不到
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2743 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 15:25 · PVG 23:25 · LAX 07:25 · JFK 10:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.