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

2014-01-05 18:42:52 +08:00
 fdsfsdfsdf3334
由于公司的一个项目 位于阿里云服务器上

但不希望外网的人访问

希望各位给出安全的方法

我自己想到的有好几个

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

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

求各位大神指点

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

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


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


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


我想让没有经过授权的电脑,连页面都打不开,服务器连请求都不回复他
chairuosen
2014-01-05 19:27:25 +08:00
没cookie的不返回?
Jat001
2014-01-05 22:44:35 +08:00
我是这么做的:
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
2014-01-05 23:25:33 +08:00
不是很重要的测试项目,一般不做解析,客户端配hosts就可以了,方便快捷无公害
fdsfsdfsdf3334
2014-01-05 23:51:27 +08:00
@Jat001 多谢 多谢,我差不多就是要这个功能,不过听你说的 感觉好麻烦 好复杂
msg7086
2014-01-06 01:53:28 +08:00
@fdsfsdfsdf3334 无非就几种
1. 配置公钥,在HTTPS握手层解决
2. 配置域名,域名和IP指向只有自己知道,写入host或者公司内网DNS
fdsfsdfsdf3334
2014-01-06 01:56:05 +08:00
@msg7086 第二个 配置域名 你的意思是 域名 不使用 类似dnspod这样的服务来解析吗,只是只是本地修改host 是吗
lazycat
2014-01-06 07:21:53 +08:00
Startssl的登陆是怎么做到的。。。这种方式应该符合楼主要求。。。
msg7086
2014-01-06 10:04:01 +08:00
@fdsfsdfsdf3334 是啊。反正只有内部使用,而且还需要保密,那为啥还要到dnspod之类的地方去解析呢

@lazycat 客户端证书。以前研究过这个问题,但是实现起来其实很麻烦……

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

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

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

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

© 2021 V2EX