如何使用推送扩展程序将页面从一个MediaWiki推送到另一个基于SSL的wiki,并使用自签名证书?

时间:2016-01-08 17:47:49

标签: ssl-certificate mediawiki

https://www.mediawiki.org/wiki/Extension:Push 是一个扩展程序,可以让您将页面从一个MediaWiki推送到另一个。

如记录所述 https://www.mediawiki.org/wiki/Topic:Saza08eh1dcygs3c 我无法使用目标Mediawikis来使用SSL和自签名证书。

推送会收到消息:Dateitransfer fehlgeschlagen:Authentifizierung auf https:///api.php ist fehlgeschlagen。

现在问题已经解决了,我正在添加这个问题,以便让Stackoverflow用户可以找到解决方案。

1 个答案:

答案 0 :(得分:0)

首先如https://www.mediawiki.org/wiki/Topic:Saza08eh1dcygs3c

中所述

https://github.com/BITPlan/Push/commit/cf393a32423bd8ae07af50a5587f847f20cfb9b9

提交了一些额外的行以进行错误处理。结果消息是:

身份验证... / mediawiki / api.php(http-curl-error:SSL证书问题:无法获得本地颁发者证书)失败。

这是处理此类情况的重大改进 - 尤其是调试效果更好。

所以添加的自然尝试:

  1. 的ini_set(" openssl.cafile"" BITPlanValidCerts.pem&#34)
  2. INI设定(" curl.cainfo"" BITPlanValidCerts.pem&#34)
  3. 没有用 - 你必须在php.ini文件中设置它们。然后卷曲https://测试工作。但仍然没有使用Mediawiki和推送扩展。

    https://github.com/BITPlan/Push/commit/3f68dd36a65ff6ad8c68df807c2c32311073dae4

    通过将curl.cainfo php ini设置添加到curl选项

    来解决此问题
    getHttpRequest( $target,
                array(
                array(
                    'postData' => $requestData,
                    'postData' => $requestData,
                    'method' => 'POST',
                    'method' => 'POST',
    -               'timeout' => 'default'
    +               'timeout' => 'default',
    +               'caInfo' => ini_get('curl.cainfo')
                )
                )
            );
            );
    

    同样的修复也可能适用于升级建议的类似情况: https://www.mediawiki.org/wiki/Manual:Extension_support/1.17/ExtUpgrading

    已被跟踪。如果提供了caInfo选项,MWHttpRequest将处理ca https://doc.wikimedia.org/mediawiki-core/master/php/HttpFunctions_8php_source.html