
通过HTTPS访问用户指定主机的应用程序是一个常见的需求,但在实际应用中可能会遇到一些困惑。对于这个问题,php小编香蕉认为应该尝试通过查找FQDN来提供帮助。FQDN(Fully Qualified Domain Name)是一个完全限定的域名,包含主机名和域名。通过查找FQDN,可以确保准确地定位到用户指定的主机,从而提供准确的帮助和服务。因此,在进行HTTPS访问时,查找FQDN是一个有益的策略。
我正在使用一个 golang 应用程序,该应用程序通过另一台主机上的 HTTPS 与服务器进行通信。具体来说,如果上下文很重要:从同一 Google Cloud 项目中的 GCE 实例与 Dataproc 集群进行通信(无需特殊的域设置)。
服务器生成一个自签名证书,我已在客户端手动安装该证书。
服务器和客户端都是我的 Google 云项目上的 GCE 实例(它们的 FQDN 为 <hostname>.c.<project_id>.internal</project_id></hostname>)
如果我尝试使用 golang 的 http.Client 从客户端连接到服务器,我会收到如下错误:
failed to verify certificate: x509: certificate is valid for *.c.<project_id>.internal, not <server_hostname>
但是,如果我将其 FQDN 传递给它(<server_hostname>.c.<project_id>.internal</project_id></server_hostname>),则它可以开箱即用。
仅供参考,此行为与我运行 cURL 时看到的一致:
本文档主要讲述的是Android服务Service_详解;服务(Service)是Android系统中4个应用程序组件之一(其他的组件详见3.2节的内容)。服务主要用于两个目的:后台运行和跨进程访问。通过启动一个服务,可以在不显示界面的前提下在后台运行指定的任务,这样可以不影响用户做其他事情。通过AIDL服务可以实现不同进程之间的通信,这也是服务的重要用途之一。希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看
0
curl: (60) SSL: no alternative certificate subject name matches target host name '<server_hostname>'
所以我的问题是:
*.c.<project_id>.internal</project_id> 的一部分,并且开箱即用,不是吗?或者它是否总是要求使用传入的字符串来实际匹配通配符字符串(这意味着它不进行查找,并且仅在您传入 fqdn 时才有效)?注意:我不想跳过验证 - 我只是想更好地了解正在发生的事情,并知道这里的最佳实践是什么。
谢谢!
<server_hostname></server_hostname> 和 <server_hostname>.c.<project_id>.internal</project_id></server_hostname> 解析为相同的内容,证书仅包含第二个(或与其匹配的通配符) 。由于这些是自行生成的,因此您可以在其中添加短名称作为 SAN(主题备用名称)。
OpenSSL 的附加标志:-addext "subjectAltName = DNS:localhost,DNS:<server_hostname>"
公共 CA 不太可能为您提供具有不可公开解析的 SAN 的证书。 (有些可能,我没试过)
作为示例,您不希望从 google.com.someevildomain.org 提供或信任 google.com,因此这是一项安全功能。
以上就是通过 HTTPS 访问用户指定主机的应用程序是否应该尝试通过查找其 FQDN 来提供帮助?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号