11

我在我的移动应用程序中集成了 Sign in with Apple 。我按照开发者门户中提供的配置步骤下载了apple-developer-domain-association.txt 文件并将其放在我的服务器上给定路径。在此处输入图像描述现在该文件正在从 Web 浏览器加载,但我无法在 Apple 开发人员帐户上验证我的域。它给了我一条错误消息“域验证失败”。

有人遇到同样的问题吗?如何成功通过验证

4

5 回答 5

5

要验证域以配置 Sign in With Appleapple-developer-domain-association.txt文件必须可公开访问。

https://{YOUR_DOMAIN}/.well-known/apple-developer-domain-association.txt

确保

  1. 与电子邮件地址关联的域和域必须符合发件人策略框架 (SPF) 标准。
  2. 必须可以通过https. http 不工作。
  3. 甚至没有重定向到wwww. 上面提到的示例 url 必须在apple-developer-domain-association.txt没有任何重定向的情况下提供文件。

提示:如果您apple-developer-domain-association.txt使用的www不是,您必须www.{YOUR_DOMAIN}在 developer.apple.com 上使用苹果配置注册域白色配置登录。为此,您必须确保www.{YOUR_DOMAIN}符合 SPF。

于 2019-09-12T07:31:26.303 回答
2

在继续和补充@Bilal

A. 如果域不符合 SPF,您将在尝试将其添加到开发人员门户时立即注意到

B. 如果您不确定您的网站是否被重定向,您可以在http://www.redirect-checker.org/中检查它,或者只使用邮递员并在请求设置中禁用“自动遵循重定向”选项

C. Apple 要求您的服务器必须支持传输层安全 (TLS) 1.2 协议和下列密码套件之一:

TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
TLS_RSA_WITH_AES_128_GCM_SHA256
TLS_RSA_WITH_AES_128_CBC_SHA256

对我来说,问题是 www 重定向,我不知道我们的服务器会这样做,我的 devops 帮助我解决了这个问题,只是为了验证。

最佳解决方案 IMO 只是使用您自己的中继微服务和一个独特的专用域......

于 2019-10-03T04:57:40.243 回答
2

为了扩展@MTZ4 的回应(顺便说一句,因为你搞定了),这是我需要完成的过程,并为其他不太熟悉解决这些类型问题的人提供了一些指导。

就我而言,我让 CloudFlare 处理 DNS 和 TLS 密码证书以及为站点提供服务的 Heroku。

第一步是确定您的 TLS 提供商是否提供 Apple 所需的适当 TLS 密码。

TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
TLS_RSA_WITH_AES_128_GCM_SHA256
TLS_RSA_WITH_AES_128_CBC_SHA256

最简单的方法之一是使用SSL labs certificate checker。只需输入您的根域并让报告运行(需要几分钟)。在报告响应中,查找Cipher Suites部分并验证 Apple 想要的 TLS 密码是否可用。在下图中,您可以看到它们呈橙色并标记为弱。

你可以忽略状态,这是因为这些密码不使用临时密钥,不会在 TLS 1.3 中使用。

SSL 实验室结果

如果您想要更全面的测试,请安装NMAP,然后下载ssl-enum-ciphers 脚本。安装 NMAP 并下载脚本后,针对您的域执行脚本:

nmap --script ssl-enum-ciphers -p 443 my-root-domain.com

这会产生如下所示的结果集:

NMAP结果

再次查找TLSv1.2部分并根据 Apple 的列表检查您的密码列表。如果它们不存在(上图中缺少它们),那么这就是您的问题所在。

那么如何修复呢?好吧,有几个选项,这完全取决于您的 TLS 提供商,它可能是您的网络主机,也可能是您的 DNS 主机,具体取决于您的配置。

对我们来说,我们使用 CloudFlare 作为我们的 DNS 提供商。CloudFlare 还提供 TLS 密码。因为 CloudFlare 不支持 Apple 需要的密码(上面的 NMAP 图像),并且出于对 TLS 1.2 和迁移到 TLS 1.3 的安全考虑,他们不会添加它们,我们不得不禁用 CloudFlare 的代理服务以允许之前的 TLS 证书由我们的托管服务 (Heroku) 提供。

事实证明这很容易。只需登录 CloudFlare,进入 DNS 条目并更改流量路由行为(单击橙色云使其变为灰色以进行验证,然后在验证完成后再次单击它)。有关更多信息,请参阅CloudFlare 的支持页面

完成此操作后,Heroku 将提供 TLS 密码,其中包括 Apple 所需的密码(如上图 SSL 实验室图片所示)。

最终,为您的 TLS 密码提供服务的人必须包括 Apple 需要的密码。如果您上面的测试没有显示正确的密码,请检查您的 DNS/TLS 服务和您的托管服务提供商,看看他们是否支持它们。如果他们不这样做,那么您可能需要切换。

最后还有一点值得注意的是,在苹果的开发者门户中,当你点击验证文件的下载按钮时,千万不要再点击!每次单击按钮时,验证文件都会更改,因为它似乎是动态生成的。

只需修复所有 TLS 问题,然后登录 Apple 开发人员门户,下载文件,上传到您的服务器,然后进行验证。

我最终确实在其中一些方面与 Apple 支持合作,他们正在考虑向验证页面添加一些文档,说明需要哪些密码,这样其他人就不会遇到同样的问题。

于 2019-10-10T21:00:15.520 回答
1

我正在运行 node js 和 express 并遇到问题,因为我从 Sectigo 购买了便宜的 SSL 证书。这是我为修复它所做的。

  1. 检查您的 SSL 证书是否有错误https://www.digicert.com/help/

  2. 我必须安装一个中间证书。这解决了这个问题。如果您在 Safari 中执行检查,它不会给您确认域已验证。相反,在 Chrome 中执行检查,它会给你一个确认。

  3. 检查从服务器返回的 HTTP 标头。如果是 301,Apple 不会跟随它。相反,验证文件必须通过 200 HTTP 状态码返回。我指的验证文件是https://example.com/.well-known/apple-developer-domain-association.txt其中 example.com 是您的域。

于 2019-11-12T21:54:05.577 回答
0

如果您使用 Cloudflare 免费套餐,升级到 PRO 计划(目前每月 20 美元)就可以了。他们所有的付费计划都包括所需的密码。

当然,您可以在验证后随时取消计划并返回免费。

于 2019-11-21T01:15:19.660 回答