V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
fdsfsdfsdf3334
V2EX  ›  问与答

只有安装了证书,才可以访问网站,的解决方案 求助

  •  
  •   fdsfsdfsdf3334 · 2014-01-05 18:42:52 +08:00 · 5188 次点击
    这是一个创建于 3978 天前的主题,其中的信息可能已经有所发展或是发生改变。
    由于公司的一个项目 位于阿里云服务器上

    但不希望外网的人访问

    希望各位给出安全的方法

    我自己想到的有好几个

    分别是用vpn,但这个方案目前来说 不太方便

    还有就是证书 ,但证书的方法我一直没有琢磨透

    求各位大神指点

    最好是没有经过授权的电脑,连页面都打不开,服务器连请求都不回复他

    用的openerp 打算把服务器组件换成nginx


    求大神给出方案
    10 条回复    1970-01-01 08:00:00 +08:00
    Livid
        1
    Livid  
    MOD
       2014-01-05 18:55:10 +08:00 via iPhone   ❤️ 1
    1. 只允许公司的 IP
    2. 用一个特殊的不存在的域名,客户端里写入到 hosts
    3. nginx 里加上 HTTP 验证
    fdsfsdfsdf3334
        2
    fdsfsdfsdf3334  
    OP
       2014-01-05 18:56:30 +08:00
    @Livid 你好 多谢指点 但是公司ip是动态的, 并且,我可能随时拿着电脑去别的环境上网,当然是用我自己的电脑


    3. nginx 里加上 HTTP 验证
    这个意思是加上密码验证吗? 我们的系统登陆的时候默认是有密码的


    我想让没有经过授权的电脑,连页面都打不开,服务器连请求都不回复他
    chairuosen
        3
    chairuosen  
       2014-01-05 19:27:25 +08:00   ❤️ 1
    没cookie的不返回?
    Jat001
        4
    Jat001  
       2014-01-05 22:44:35 +08:00   ❤️ 1
    我是这么做的:
    1. 自签一个根 CA,私钥离线存储。
    2. 用根 CA 再签两个中间 CA,分别用于客户端验证和服务器验证。严格设置 keyUsage、extendedKeyUsage 和 nsCertType。
    3. 用两个中间 CA 分别签发客户端证书和服务器证书。服务器证书要带有完整的证书链。
    4. 在本地信任根 CA。
    5. 在服务器信任用于客户端验证的中间 CA。

    这种方法我认为是比较安全的,因为根 CA 离线存储,中间 CA 也不存储在服务器上,只有服务器证书的密钥对和用于客户端验证的 CA 的公钥存储服务器上。用了这种验证方法后,我把一些程序自带的密码也去掉了。

    我只用过 nginx,客户端发出请求后需要先验证,成功后才访问具体文件,不成功直接返回 400。而要想什么都不返回,这应该是不可能的,因为 http 状态码是由 RFC 2616 规范定义的,要么别用 http/https 协议,要么自己开发个 web 服务器。
    qq286735628
        5
    qq286735628  
       2014-01-05 23:25:33 +08:00   ❤️ 1
    不是很重要的测试项目,一般不做解析,客户端配hosts就可以了,方便快捷无公害
    fdsfsdfsdf3334
        6
    fdsfsdfsdf3334  
    OP
       2014-01-05 23:51:27 +08:00
    @Jat001 多谢 多谢,我差不多就是要这个功能,不过听你说的 感觉好麻烦 好复杂
    msg7086
        7
    msg7086  
       2014-01-06 01:53:28 +08:00   ❤️ 1
    @fdsfsdfsdf3334 无非就几种
    1. 配置公钥,在HTTPS握手层解决
    2. 配置域名,域名和IP指向只有自己知道,写入host或者公司内网DNS
    fdsfsdfsdf3334
        8
    fdsfsdfsdf3334  
    OP
       2014-01-06 01:56:05 +08:00
    @msg7086 第二个 配置域名 你的意思是 域名 不使用 类似dnspod这样的服务来解析吗,只是只是本地修改host 是吗
    lazycat
        9
    lazycat  
       2014-01-06 07:21:53 +08:00 via Android
    Startssl的登陆是怎么做到的。。。这种方式应该符合楼主要求。。。
    msg7086
        10
    msg7086  
       2014-01-06 10:04:01 +08:00
    @fdsfsdfsdf3334 是啊。反正只有内部使用,而且还需要保密,那为啥还要到dnspod之类的地方去解析呢

    @lazycat 客户端证书。以前研究过这个问题,但是实现起来其实很麻烦……
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3063 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 14:37 · PVG 22:37 · LAX 06:37 · JFK 09:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.