- 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/
我正在使用 Tornado 与 twitter 等第三方进行身份验证。 我的登录处理程序看起来像这样 class AuthLoginHandler(BaseHandler, tornado.auth.
有没有一种真正的方法可以在 Pylons 中添加身份验证?我见过很多不同的方法,但大多数方法要么过时,要么过于复杂。是否有教程可以解释如何以良好而可靠的方式添加身份验证? 最佳答案 考虑使用 repo
RESTful 身份验证是什么意思,它是如何工作的?我在谷歌上找不到很好的概述。我唯一的理解是您在 URL 中传递了 session key (记住),但这可能是非常错误的。 最佳答案 如何在 RES
我正在考虑在基于插件的系统中实现安全性的多种方式。现在,当我说“安全”时,我的意思是: a) 插件系统的开发人员如何确保插件在核心平台上的使用是安全的。b) 插件开发人员如何确保在其平台上使用的插件是
我正在使用 WCF Webhttp 服务。我创建了一堆服务,剩下的就是放入用户身份验证... 问题 与其余架构风格保持一致,我是否应该针对用户 db 验证每个服务调用。 如果是这样,我应该在每次调用服
假设我想对 Mifare Classic 进行身份验证。 我如何知道要发送到卡的确切类型的 APDU? 例子。 这段代码: bcla = 0xFF; bins = 0x86; bp1 = 0x0;
我通过在文件 xyz.php 中编写以下代码登录到网站。当我运行这个文件时,我会登录到 moodle 网站。有什么方法可以像下面的登录代码一样注销吗? $user = authenticate_use
我有一个应用程序可以匿名访问除几个之外的所有 xpages。我需要强制用户登录这些 xpages。是使用 beforepageload 事件来检查用户登录页面并将其重定向到正确的方式还是有更好的方法?
我想用 ember.js 实现身份验证。 因此,当应用程序启动时,在路由器处理请求的 url 之前,我想检查用户状态。如果用户未通过身份验证,我想保存请求的 url 并重定向到特定的 url (/lo
您如何执行 jQuery Ajax 调用并在发送请求之前对调用进行身份验证? 我还没有登录所以必须进行身份验证。安全不是任何人都可以访问的问题,只需要进行身份验证。它只是基本的 http 身份验证,您
我尝试使用找到的 swift 代码 here在网站上找到here ,但响应是带有两个错误的 html 代码:“您必须输入密码!”和“您必须输入用户名!”我是 NSURLSession 的新手,并尝试更
我正在尝试连接到 Visa Direct API,但我没有通过基本的 SSL 证书认证,这是我的代码: import requests headers = { 'Content
我正在用 tornado 在 python 中开发一个 REST API,我将实现身份验证和授权,试图避免锁定到其他大项目,即 django。我也在通过论坛和 SO 环顾四周,我喜欢一个可能适合的解决
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭10
如何在 Android 中通过 HTTP 进行身份验证? 最佳答案 我非常难以在 Android 中通过 HTTP 进行身份验证,因为在浏览器(Web 和 Android native )中它工作完美
我有一些关于登录和 session 的问题。我有这段代码: 数据库查询: login: function(req,callback) { var query = 'SELECT id FROM
我开始使用 Swift 开发 iOS 应用。现在我正处于需要创建登录系统的部分。但是,我们需要人们提供的 LinkedIn 信息。 我如何在 iOS 中使用 OAuth2 API 来实现这一点? 我已
如果没有找到用户,问题出在每个 $routeChangeStart 上,如果我只输入 url,它仍然会引导我访问页面。 现在我已经在服务器上重写了规则。 Options +FollowSymlinks
简单代码 require 'net/http' url = URI.parse('get json/other data here [link]') req = Net::HTTP::Get.new(
参考文档: https://docs.sonarqube.org/latest/instance-administration/security/ 概述 SonarQube具有
我是一名优秀的程序员,十分优秀!