【问题标题】:Facebook Link Sharing IssueFacebook 链接分享问题
【发布时间】:2020-12-24 16:37:57
【问题描述】:

我的网站上有一个使用 Django Social Share 的“分享到 facebook”链接。问题是发布到 Facebook 的链接没有被抓取——图像、描述和标题没有填充。所有 OG 元标记都存在且正确,因此我检查了 Facebook Sharing Debugger 并显示以下错误:

SSL Error
Can't validate SSL Certificate. Either it is self-signed (which will cause browser warnings) or it is invalid.
Curl Error
Curl error: 60 (SSL_CACERT)

网站的 SSL 证书完全有效 - 完全没有错误或警告。我在 Apache 上使用 LetsEncrypt,并通过 WSGI 使用 Django 应用程序。任何其他社交网络都没有问题。

给出此错误的链接之一的示例: https://www.netizen.net/news/post/2643/netizen-ranks-184-on-the-2020-inc-5000-list

如您所见,如果您访问该页面,则没有 SSL 错误。正如预期的那样,LinkedIn、Twitter 和其他地方的相同链接被抓取,但 FB 似乎有这个问题。

【问题讨论】:

  • 谷歌“ssl check”,在前几个结果中输入你的主机名,看看他们要说什么。
  • 未发现问题。尝试了三种不同的跳棋。就像我提到的,只有 Facebook 有这个问题 - 它在所有其他社交网站上都可以正常工作。
  • sslshopper.com/ssl-checker.html#hostname=www.netizen.net: “并非所有网络浏览器都信任该证书。您可能需要安装中间/链证书以将其链接到受信任的根证书。”
  • ssllabs.com/ssltest/…: “链问题:不完整”
  • digicert.com/help: “TLS 证书不受信任 - 证书未由受信任的机构签署(检查 Mozilla 的根存储)。如果您从受信任的机构购买证书,您可能只需要安装一个或多个中间证书。”

标签: django facebook ssl ssl-certificate social-networking


【解决方案1】:

因此,在返回 cmets 后,我根据 CBroe 的指导找到了解决方案。简而言之,Let's Encrypt 不会在其执行的“标准”Apache 配置中自动包含SSLCertificateChainFile,因此需要手动添加。完成此操作后,链接开始按预期在 Facebook 上共享。

但是,它似乎只使用 chain.pem 文件作为链文件而不是 fullchain.pem ,其中包含无关证书。一旦我如下配置 Apache,重启 Apache,并运行 SSL 检查,它就开始工作了:

...
SSLCertificateChainFile /etc/letsencrypt/live/mydomain.com/chain.pem
...

现在,SSL 证书通过了所有检查并获得“A”评级,并且在所有设备/平台中都受到信任,因为包含正确的链文件:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-16
    • 1970-01-01
    • 2013-12-18
    • 2011-05-06
    • 1970-01-01
    • 2021-03-19
    • 2011-09-16
    • 1970-01-01
    相关资源
    最近更新 更多