ssl - 如何认证本地服务器? SSL/TLS HTTPS

标签 ssl https web-deployment

前传:我创建了一个应该与我们公司网站交互的网络应用程序。我与负责网站的其他开发人员(不同的公司分支机构)远程工作。我对网络开发完全陌生,没有“上线”经验。

我的应用程序在使用 tomcat 8.5 的本地公司服务器上运行。公司网站中包含一个 html 页面,可从我的服务器加载不同的 JavaScript 文件(和 css)。与我的应用程序的交互发生在那里。我曾经通过 HTTP 执行此操作,一切正常。例如:

<script src="http://172.17.123.123/MyProject/js/script.js"></script>

问题:现在开发人员告诉我,我应该获得证书并使用 HTTPS 来使我的服务器和公司 Web 服务器之间的通信更加安全。这就是他所做的,因为他管理的网站可以在 Internet 上访问,并且他可以轻松地从受信任的 CA 生成证书。他不知道如何为本地服务器执行此操作。

我设法启用了 HTTPS 并使用了自签名证书。现在我用

<script src="https://172.17.123.123:8443/MyProject/js/script.js"></script>

但是我得到这个错误:

Failed to load resource: net::ERR_CERT_AUTHORITY_INVALID

我想为我的服务器使用来自 CA 的证书,但了解到不可能为本地主机获得证书。但是我没有找到关于本地服务器的任何信息。我想同样的原则也适用。

问题:在网络服务器和本地公司服务器之间使用 HTTPS 进行通信是否有益?如果是这样,我如何生成受信任的证书?自签名证书是否足够?

最佳答案

您谈论您的服务器和 Web 服务器之间的通信,但实际上没有; Web 服务器正在向浏览器 提供一个页面,其中包括对您服务器上资源的引用,因此浏览器 正在与您的服务器进行通信,并且是浏览器不信任您的自签名证书。

如果浏览器和服务器之间的网络实际上不安全(例如包括 DMZ 或其他不受信任的区域或不安全的链接)或者必须被视为不安全(例如,根据 PCI DSS 处理支付卡数据)。从您提供的信息中无法评估这一点,而且您的公司几乎肯定不会允许您发布使之成为可能的信息——而且它对其他任何人都没有用,这违反了 StackExchange哲学。您应该咨询负责公司网络安全的人员,了解是否需要 HTTPS,以及可能的选项以及他们可能支持或协助的内容。

的确,您无法为 localhost 获得公开信任的证书,但这并不重要,因为您没有使用 localhost。您使用的是私有(private) (rfc1918) 又名“内部网”地址,这是完全不同的,但您也无法为这些地址获得公开信任的证书。

明显的技术选择是:

  • 使用自签名证书(地址)并配置将使用此应用程序的每个浏览器信任该证书。这可能会有所不同,具体取决于您的用户喜欢什么以及他们有多少。如果他们都在加入域的 Windows 上并使用 IE/Edge 或 Chrome 而不是 Firefox,则中央管理员可能只创建一个 GPO 来“推送”证书,然后你就完成了。如果在世界各地的十几个平台上有数千个,您可能需要花费数月的时间来培训和协助所有人导入证书,可能包括让人们翻译成外语。

    如果您还不知道,如果您的任何用户使用 Chrome,则证书必须在主题备用名称 (SAN) 以及中具有授权名称,此处为地址主题通用名。其他浏览器目前不需要这个,但将来可能会因为它已经成为 CABforum 政策已有一段时间了。许多常用于创建自签名证书的工具,如 OpenSSL 命令行和 Java key 工具,不会自动执行此操作。 (公共(public) CA 会这样做。)已经有很多关于此的问题,如果适用,您可以搜索它们。

    同样对于这种方法,除非您已经知道,否则您应该验证分配的地址将保持稳定。一些公司网络不时需要重新安排他们的地址分配,例如办公室的开设或扩建或关闭,重大项目搬迁等。如果成千上万的人每年都要重复几次陌生而神秘的证书导入,你会变得很不受欢迎。

  • 在公司域下为您的系统获取一个(子)域名,该域名仅在公司内部网络上解析为您机器的地址——该解析不需要是,不应该,公开。然后为该子域名获取一个公开信任的证书。使用 DNS-01 的 LetsEncrypt 可以为您颁发域名证书,即使没有使用该域名的系统可以从公共(public)互联网访问,只要您控制它的 DNS。 OTOH 如果您的公司已经拥有网络存在和证书,那么它应该已经建立了获取它们的流程;我上面提到的网络安全人员应该知道这一点。

关于ssl - 如何认证本地服务器? SSL/TLS HTTPS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52871294/

相关文章:

html - https 站点上的 hitbox iframe

java - 什么是 Java Web 应用程序部署格式?

Java 证书客户端 SSL : unable to find valid certification path to requested target

docker - 如何使用带有 Nginx 镜像的 Docker 实现 (Certbot) ssl

security - HTTPS 握手很慢。有什么好的选择来改善用户体验?

amazon-ec2 - 将 Rails 3.1 应用程序部署到 Amazon Ec2

javascript - 如何在不影响页面加载速度的情况下加载谷歌广告?

Qt QWebView 证书链的根证书是自签名的,不受信任

ssl - 我在 Google Cloud 托管上的 SSL 证书在哪里?

apache - 如何为适用于 Nginx 和 Apache 的 SSL 生成 CSR?