我已经设置了一个 CNAME 条目来通过 Amazon S3 存储桶进行重定向,但是有些东西不能按预期工作(当然是我所认为的),我希望使用 CNAME 重定向一个虚构的子域,比如说重定向s3.example.com
到具有相同名称的 Amazon S3 存储桶。
现在的问题是,example.com
没有 SSL,而 Amazon bucket 有。我假设,使用 CNAME 规则,它应该会重定向流量前为了访问我的网络服务器并检查是否存在证书,请注意,为此目的,DNS设置为我的域名提供商而不是我的托管提供商。
当有 CNAME 规则并且正常工作时,为什么它还要检查 SSL?例如,如果我s
从 URL 中删除,它会打开存储桶中的相关文件,而不会发出任何证书警告。
编辑:返回的错误不同,我会尝试翻译并调整它:
s3.mydomain.com is using a not valid certificate. the certificate is
only valid for the following names: *.s3.eu-central-1.amazonaws.com,
*.s3-eu-central-1.amazonaws.com, s3-eu-central-1.amazonaws.com, s3.eu-
central-1.amazonaws.com, s3.dualstack.eu-central-1.amazonaws.com,
*.s3.dualstack.eu-central-1.amazonaws.com, *.s3.amazonaws.com
然后,他似乎正在读取 CNAME 规则并查找正确的域(amazon s3),然后将其与我的域进行对比,发现它是一个不同的名称,然后在重定向之前停止。因此,如果我删除它,它将s
不会给出任何错误。现在我会尝试安装 let's encrypt 并查看证书是否有帮助,但我猜它仍然会让这个检查广告再次给出类似的(如果不是相同的)结果。
答案1
DNS 区域中的 CNAME 工作正常,但浏览器会检查远程网站提供的证书对于所访问的域是否有效。
存储您的数据的 Amazon S3 服务器没有或没有提供有效的证书s3.mydomain.com
,因此所有访问者都会看到证书警告。
这是完全正常的,也是 SSL 证书的工作方式 - 否则任何网站都可以假装是任何其他 SSL 加密网站。证书不仅用于加密,还用于身份验证,购买证书时,证书颁发机构 (CA) 会进行身份验证。如果您不是购买证书时所说的那个人,CA 应该拒绝创建或向您颁发证书 - 如果他们不执行该验证步骤,他们会发现自己已从 Firefox、Chromium、IE、Edge 等 Web 浏览器分发的默认受信任 CA 列表中删除。
执行您想要的操作的“正常”方法是使用由浏览器已知和信任的证书颁发机构签名的证书为您的域运行自己的 https 服务器。对于私人/内部网类型的 Web 应用程序,您可以运行自己的 CA 并将 CA 的证书分发给您的用户。对于公共网站,最好/最简单的方法是从知名 CA 之一购买证书。
然后,您服务器上的应用程序代码应该从亚马逊获取所需的数据并将其返回给用户,而用户无需知道或关心亚马逊是否参与其中。
答案2
CNAME 不是重定向,而是别名。它的作用是告诉 DNS 解析器您的 s3.example.com 地址应使用与亚马逊的 s3 域相同的 DNS 信息。
这一切都发生在 DNS 级别,而不是浏览器级别。就浏览器而言,它仍然连接到 s3.example.com,因此当它尝试验证 SSL 证书时,它希望找到与该域匹配的证书。
我不熟悉亚马逊的服务,但你需要一种方法让他们提供有效的证书,以便使用 HTTPS 来使用你的自定义域名。如果这不可能,你必须坚持使用纯 HTTP 或停止使用你的自定义域名。