我的任务是开发命令行软件的内联网接口,现在我正在研究安全选项。我们的命令行应用程序已经完成,但我还没有开始编写 Web 界面。我不确切地知道潜在客户的安全要求是什么,尽管我相信ssh
对于命令行界面来说通常是可以接受的。考虑到这一点,我请求帮助开发一个选择菜单及其相关的优缺点。有一天,我们可能会考虑将我们的网络界面发布到互联网上,因此,如果简单和/或免费,我愿意考虑比当前必要的更高的安全性。
我已经做了很多阅读,我的初步结论是,没有证书的 SSL 安全性是最好的方法,不是因为较低的安全性是不可接受的,而是因为 SSL 是标准,并且因为它似乎并不困难。设置。作为一名非安全专家,我不需要解释为什么非安全专家可以接受较低的安全性。如果有必要,我可以升级我的应用程序以在将来使用证书。
以下是 SSL 相关安全选择的列表,按我对安全级别的看法和评论排序。我需要什么级别的保护?
No SSL.如果我们的客户不担心他们的员工看到/更改彼此的数据,这可能是可以接受的。无论如何,他们的员工可能希望彼此共享结果,并且我可以使用基于 IP 的访问控制和/或密码来确保安全。
无需证书即可执行 SSL。这对通信进行了加密,至少可以保护数据不被未经授权的员工读取。使用密码,这与以下安全级别相同ssh
在命令行上,对吗?我不需要担心内网中的中间人攻击,对吧?这种方法的缺点是如果存在大量浏览器警告消息。
使用自签名证书执行 SSL。这给了我什么没有证书给我的东西?如果 DNS 可以被不恰当地更改,那么客户和我的应用程序就不是他们最关心的问题。换句话说,如果 DNS 可以改变,那么我想ssh
也会很脆弱。
使用本地证书颁发机构执行 SSL。OpenSSL 让我可以创建自己的证书颁发机构。这给了我什么是自签名证书所没有的?我假设在 LAN 上,验证服务器不太重要。
使用外部证书颁发机构执行 SSL。是否有理由为 Intranet 采用这条路线?我发现了一些在网上出售的“内联网证书”——但不清楚他们提供什么,我自己做不到。
作为参考,此页面可能有助于比较证书:
http://httpd.apache.org/docs/trunk/ssl/ssl_faq.html#aboutcerts http://httpd.apache.org/docs/trunk/ssl/ssl_faq.html#aboutcerts
[update]
Here's http://www.networkworld.com/article/2457649/security0/new-ssl-server-rules-go-into-effect-nov-1.html一篇讨论从公共 CA 获取内部证书的风险和规则的文章。
是的,证书对于 Intranet SSL 仍然有用。
SSH 和无证书 SSL 之间有一个重要区别:当您首次使用 SSH 连接到服务器时,您的 SSH 会存储服务器的指纹。如果您随后尝试连接到 SSH 客户端认为是同一台计算机但返回不同指纹的设备,它会提醒您可能有人拦截您的通信。
另一方面,无证书的 SSL 不存储服务器的指纹。您的通信仍将被加密,但如果有人以某种方式劫持了您提到的 DNS 服务器,或者,正如鲁西奥所说 https://stackoverflow.com/questions/20894868/are-certificates-useful-for-intranet-ssl/20895967#comment31387770_20895967,ARP 中毒或类似的东西,他们将能够执行中间人攻击。如前所述,SSH 会(假设您在过去某个时间连接到正确的服务器)注意到指纹已更改并提醒您。
自签名证书的安全性与 SSH 相当。中间人可以生成自己的自签名证书,但只要您的应用程序配置为仅接受that自签名证书,您应该会收到类似于 SSH 给您的警报。
本地证书颁发机构为您提供类似于自签名证书的安全性,但可能更具可扩展性。如果您有多个服务器,每个服务器都可以有自己的证书,但客户端只需要顶级服务器即可信任所有服务器。如果服务器受到威胁,您可以撤销其证书,而不必更改每个服务器的证书。
我不认为外部证书颁发机构有任何优势,除了如果您的计算机已经信任证书颁发机构可能会减少配置之外。
最后,我对双因素身份验证了解不够,无法对其进行评估,但对于大多数应用程序来说,SSL 应该足够了。
Disclaimer: I am not a security expert.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)