【发布时间】:2019-01-24 23:56:36
【问题描述】:
当通过 https 向 Facebook 询问 scrape my page 时,我收到“Curl 错误:SSL_CACERT SSL 证书问题:无法获取本地颁发者证书”。我该如何解决这个问题,以便 Facebook 可以准确无误地抓取我的页面?
该页面通过 Apache 2.4 代理到 IIS 10 托管。Apache 处理所有证书,而 IIS 位于本地网络上。我的页面正在运行 asp 代码(所以没有 php)和类似于这些的解决方案:edit the php.ini file 或 adding curl.pem to php folder 将无法解决我的问题......或者我认为?!?
IIS 没有安装证书。
我确实启用了extension=php_curl.dll -- 并且在我的 php.ini 文件中定义了extension_dir = 'C:\64bit\php-7.0.6-Win32-VC14-x64\ext'。我跟着 these steps 在 Windows 上安装 Curl。并且 phpinfo.php 确认 cURL 已启用(cURL 信息 7.47.1)。
我的 Apache 配置文件中的代理设置是:
<IfModule mod_proxy.c>
ProxyRequests Off
ProxyPass / http://192.168.1.101:88/com_ssl/
ProxyPassReverse / http://192.168.1.101:88/com_ssl/
RewriteRule ^(.+)$ https://www.domainname.com/$1 [P,L]
</IfModule>
我的 Apache 代理配置文件 such as suggested here in Step 10 中没有定义 RequestHeader:
RequestHeader set "X-RP-UNIQUE-ID" "%{UNIQUE_ID}e"
RequestHeader set "X-RP-REMOTE-USER" "%{REMOTE_USER}e"
RequestHeader set "X-RP-SSL-PROTOCOL" "%{SSL_PROTOCOL}s"
RequestHeader set "X-RP-SSL-CIPHER" "%{SSL_CIPHER}s"
这是修复错误所缺少的吗?
【问题讨论】:
-
您可以使用ssllabs.com/ssltest 来测试您的设置。
-
@WizKid 谢谢你的链接。我得到了一个 F - 多么令人震惊!我不知道。我将 Apache 从 2.4.20 更新到 2.4.36,这让我升到了 B。之后我注释掉
SSLCertificateChainFile,这让我升到了A。 (我不确定是否由于中间证书问题触发了 Facebook 错误。)
标签: facebook apache curl iis proxy