security - 证书对内网 SSL 有用吗?

标签 security ssl ssh ssl-certificate intranet

我的任务是为命令行软件开发 Intranet 界面,现在我正在研究安全选项。我们的命令行应用程序完成了,但我还没有开始编写 Web 界面。我不太清楚潜在客户的安全要求是什么,但我相信 ssh 对于命令行界面来说通常是可以接受的。考虑到这一点,我请求帮助开发一个选择菜单及其相关的优点/缺点。有一天,我们可能会考虑将我们的 Web 界面发布到互联网上,所以我愿意考虑比目前所需的更多安全性,如果它很容易和/或免费的话。

我已经做了很多阅读,我的初步结论是没有证书的 SSL 安全是最好的方法,不是因为安全性较低是 Not Acceptable ,而是因为 SSL 是标准并且因为它似乎没有很难设置。我,一个非安全专家,不需要解释为什么安全非专家可以接受较低的安全性。如有必要,我可以在将来升级我的应用程序以使用证书。

这是一份与 SSL 相关的安全选择列表,按照我对安全级别的看法和评论进行排序。我需要什么级别的保护?

  1. 无 SSL。如果我们的客户不担心他们的员工看到/更改彼此的数据,这可能是可以接受的。无论如何,他们的员工可能希望彼此共享结果,我可以使用基于 IP 的访问控制和/或密码来确保安全。

  2. 在没有证书的情况下执行 SSL。这会对通信进行加密,这至少可以保护数据不被未经授权的员工读取。使用密码,这与命令行上的 ssh 具有相同的安全级别,对吧?我不需要担心 Intranet 中的中间人攻击,对吧?如果存在大量浏览器警告消息,则此方法的一个缺点。

  3. 使用自签名证书执行 SSL。这给我带来了什么没有证书给我的东西?如果 DNS 可以更改不当,那么客户和我的应用程序是他们最不关心的问题。换句话说,如果 DNS 可以更改,那么我认为 ssh 也会受到攻击。

  4. 通过本地证书颁发机构执行 SSL。OpenSSL 让我可以创建自己的证书颁发机构。这给了我什么自签名证书没有的东西?我假设在 LAN 上,验证服务器不太重要。

  5. 使用外部证书颁发机构执行 SSL。是否有理由为内部网走这条路?我发现了一些在线销售的“Intranet 证书”——但不清楚他们提供的是什么我自己做不到。

作为引用,此页面可能对比较证书有用:

http://httpd.apache.org/docs/trunk/ssl/ssl_faq.html#aboutcerts

[更新]

Here's一篇讨论从公共(public) CA 获取内部证书的风险和规则的文章。

最佳答案

是的,证书对 Intranet SSL 仍然有用。

SSH 和不带证书的 SSL 之间有一个重要区别:当您首次使用 SSH 连接到服务器时,SSH 会存储服务器的指纹。如果您随后尝试连接到 SSH 客户端认为是同一台机器但返回不同的指纹,它会提醒您可能有人拦截了您的通信。

另一方面,SSL-without-a-certificate 不存储服务器的指纹。您的通信仍将被加密,但如果有人以某种方式劫持了您提到的 DNS 服务器,或者,as Rushyo notes , ARP 中毒或类似的东西,他们将能够执行中间人攻击。如前所述,SSH 会(假设您在过去某个时间连接到正确的服务器)注意到指纹已更改并提醒您。

自签名证书的安全性与 SSH 相当。中间人可以生成他们自己的自签名证书,但只要您的应用程序配置为仅接受那个自签名证书,您应该会收到类似于 SSH 将提供的警报你。

本地证书颁发机构为您提供类似于自签名证书的安全性,但可能更具可扩展性。如果您有多个服务器,每个服务器都可以拥有自己的证书,但客户端只需要顶级服务器即可信任所有服务器。如果服务器受到威胁,您可以吊销其证书,而不必更改每台服务器的证书。

我不认为外部证书颁发机构有任何优势,如果您的机器已经拥有受信任的证书颁发机构,则除了可能减少配置之外。

最后,我对双因素身份验证的了解还不够多,无法对其进行评估,但对于大多数应用程序来说,SSL 应该足够了。

免责声明:我不是安全专家。

关于security - 证书对内网 SSL 有用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20894868/

相关文章:

java - 在 JDK 6 中编译并在 JDK7 上运行的 Java 字节码是否对 JDK 7 中已修复的漏洞开放?

ruby-on-rails - Rails 4 参数;如何将参数列入一组值的白名单

Node.js 表示,当 minVersion 设置为 1.3 时,它正在使用 tls1.2 并使用 1.3 与客户端连接

ssl - Traefik IngressRoute 不接受 TLS 证书

python - "ROS"如何通过SSH远程控制Python脚本

linux - 保存时文件权限发生变化(使用 root )

.net - 使用 WCF 和 DefaultCredentials 时如何处理密码更改?

php - 检索当前用户的 linux 密码

laravel - 如何使用 https 而不是 http 在 GCP 上设置 laravel?

git - 自定义 SSH 配置不工作