- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
前传:我创建了一个应该与我们公司网站交互的网络应用程序。我与负责网站的其他开发人员(不同的公司分支机构)远程工作。我对网络开发完全陌生,没有“上线”经验。
我的应用程序在使用 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/
我在 Cloudflare 的域名服务器上有一个域名 example.com。该域指向我的专用服务器的 IP 地址,该服务器运行 CentOS/WHM/cPanel。该站点可访问 - 一切都很好。 我
我正在努力将 SSL 支持添加到我们现有的应用程序中,并已开始考虑向后兼容性。 与我读过的其他帖子不同的一个特殊情况是服务器可能不一定使用 SSL 代码更新。所以我将有一个 SSL 客户端连接到一个对
我有几个 https://*.rest-service.mydomain.com。随着服务数量的增加,我觉得管理 SSL 证书的成本很高。我为 *.mydomain.com 购买了通配符证书。 新添加
我的客户要求我在他的网站上做反向 ssl。但我是这个学期的新手。谁能帮我解决这个问题。 请描述或引用如何做。 最佳答案 查看 this wiki article . In the case of se
关闭。这个问题是opinion-based .它目前不接受答案。 想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它. 去年关闭。 Improve this
我连接到我的网络服务器上的存储库,但是当我尝试推送我的更改时,它显示:“错误 403:需要 ssl”,但在我的存储库设置中我已经激活了 ssl 选项。 有什么建议吗? 最佳答案 当您连接到存储库时,您
抱歉,如果这听起来像是转储问题,我已经阅读了很多关于 SSL 握手和 SSL 工作原理的文章和文档。我对一件事感到困惑,如果有人能澄清我就太好了。 我知道私钥要保密。但是我已经看到通过在请求中指定私钥
随着物联网越来越主流,越来越需要从硬件发送http请求。 一个主要问题是硬件微 Controller 无法发送 ssl 请求,但大多数服务器/网站/服务都在使用 ssl。 所以,问题是,有没有桥(一个
我有一个 ssl 页面,它还从非 ssl 站点下载头像。我能做些什么来隔离该内容,以便浏览器不会警告用户混合内容吗? 最佳答案 只是一个想法 - 或者: 尝试在头像网站上使用 ssl url,如有必要
我在 Digital Ocean droplet(使用 nginx)上设置了两个域。我已经在其中一个(domain1)中安装了一个 SSL 证书,并且那个证书一切正常。第二个域 (domain2) 不
我收到这个错误: Error frontend: 502 Bad gateway 99.110.244:443 2017/09/28 13:03:51 [error] 34080#34080: *10
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 6 年前。 Improve
我遇到了一个问题,我正在构建一个 nginx 反向代理以定向到不同 url 路径上的多个微服务。 该系统完全基于 docker,因此开发和生产使用相同的环境。这在安装 SSL 时给我带来了问题,因为
所以我知道要求 SSL 证书和接受之间的根本区别,一个意味着您必须拥有 SSL 证书,另一个意味着您不需要。 在某个网页的 IIS 管理器中,我有以下设置: 我遇到的问题是,当我设置需要 SSL 证书
我今天才发现 .app 域名需要 SSL 证书。我购买它是为了将 DNS 重定向到已经设置了 SSL 证书的站点,所以我的问题是是否可以设置它? 我正在使用 Google Domains,在将合成临时
堆栈 : react ,NGINX 1.14.0,GUnicorn,Django 2.2.8,Python 3.6.9 错误 : 在浏览器:当 React 调用 Django API(当然是在请求头中
假设我在计算机上编辑主机文件以使 google.com 指向我的 VPS 服务器 IP,并且服务器具有通过 Apache 或 Nginx 配置的 google.com 的虚拟主机/服务器 block
我有一个场景,我正在处理用于 URL 路由的 IIS 网站配置。我已添加网站并在服务器上导入所需的证书。 我的情况是(我有多个网站 URL 和两个 SSL 证书 - 如下所示): qatest1.ab
我知道服务器发送的证书无法伪造(仍然存在 MD5 冲突,但成本高昂),但是伪造客户端又如何呢?在中间人攻击中:我们不能告诉服务器我们是合法客户端并从该服务器获取数据并对其进行操作,然后使用合法客户端公
我已通读相关问题,但无法完全找到我要查找的内容。我设置了一个名为“domain.com”的域,并创建了两个子域“client.domain.com”和“client-intern.domain.com
我是一名优秀的程序员,十分优秀!