it-swarm.com.de

SSL-Fehler beim Upgrade mehrerer Datenbanken

Ich habe mein Multisite-Setup WordPress auf 3.6.1 aktualisiert. Und danach, wenn ich Network Upgrade > Database Upgrade mache, wird Folgendes angezeigt:

Warnung! Problem beim Aktualisieren von http://www.example.com/site1. Ihr Server kann möglicherweise keine Verbindung zu Sites herstellen, die auf ihm ausgeführt werden.

Fehlermeldung: Das Peer-Zertifikat kann nicht mit bekannten CA-Zertifikaten authentifiziert werden

Was ist passiert, bitte?


Info

  • Ich verwende die Site derzeit unter Trusted Wildcard SSL ( nicht selbstsigniert ), aber nur auf dem Load-Balancer installiert. (Apache-Server müssen anscheinend das Zertifikat nicht installiert haben.) Ist dies die Hauptursache?
  • Die Datenbank befindet sich bei Amazon RDS (mit den Standardeinstellungen) und ist dort nicht mit SSL. *
3
夏期劇場

Wenn möglich, sollten Sie versuchen, die Ursache dieses Fehlers zu beheben - ungültige SSL-Zertifikate. Es gibt jedoch Fälle, in denen dies nicht möglich oder wünschenswert ist. Eine naheliegende Möglichkeit sind Entwicklungsstandorte, die selbstsignierte SSL-Zertifikate verwenden.

Eine Möglichkeit, dies zu umgehen, besteht darin, $ ssl_verify vor Zeile 1161 von wp-includes/class-http.php auf false zu setzen:

curl_setopt( $handle, CURLOPT_SSL_VERIFYHOST, ( $ssl_verify === true ) ? 2 : false )

So habe ich das in der Vergangenheit gemacht:

$ssl_verify = false;

In Zeile 1159, bevor Sie ein Upgrade für mehrere Standorte durchführen und es anschließend entfernen. Es sieht so aus, als gäbe es dafür viel ausgefeiltere Möglichkeiten. Wie aus dem Code hervorgeht, sollten Sie nach dem Code in der Lage sein, den Parameter sslverify = false zu analysieren, aber das scheint nicht zu funktionieren (wahrscheinlich, weil der Upgrade-Wrapper die Parameter nicht durchläuft).

Um Änderungen am Core zu vermeiden, würde ich diese Änderung nach Abschluss des Upgrades rückgängig machen.

1
Jona

Ich weiß nicht, ob das hilft oder nicht, aber einen Versuch wert. Erstelle ein Must Use Plugin und lösche diese Zeilen, siehe Codekommentare:

<?php
/* Plugin Name: Network upgrade exception */

// Run only in the Upgrade screen
add_action( 'load-upgrade.php', 'add_filter_wpse_115279' );

function add_filter_wpse_115279()
{
    add_filter( 'http_request_args', 'apply_filter_wpse_115279', 10, 2 );
}

// http://core.trac.wordpress.org/browser/tags/3.6.1/wp-admin/network/upgrade.php#L68 
// wp_remote_get( $upgrade_url, array( 'timeout' => 120, 'httpversion' => '1.1' ) );
// This function will end up calling WP_Http class, where we can use the filter http_request_args
function apply_filter_wpse_115279( $args, $url )
{
    # Adjust var <----------------------------------
    $ms_domain_to_check = 'http://example.com/site1/';
    if( FALSE !== strpos( $url, $ms_domain_to_check ) )
    {
        $args['sslverify'] = false;
    }
    return $args;
}

/**
 * Full list of arguments in
 * http://core.trac.wordpress.org/browser/tags/3.6.1/wp-includes/class-http.php#L84

  $defaults = array(
    'method' => 'GET',
    'timeout' => apply_filters( 'http_request_timeout', 5),
    'redirection' => apply_filters( 'http_request_redirection_count', 5),
    'httpversion' => apply_filters( 'http_request_version', '1.0'),
    'user-agent' => apply_filters( 'http_headers_useragent', 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' ) ),
    'reject_unsafe_urls' => apply_filters( 'http_request_reject_unsafe_urls', false ),
    'blocking' => true,
    'headers' => array(),
    'cookies' => array(),
    'body' => null,
    'compress' => false,
    'decompress' => true,
    'sslverify' => true,
    'stream' => false,
    'filename' => null,
    'limit_response_size' => null,
  );

*/
7
brasofilo

Dieser Fehler ist wahrscheinlich auf die Verwendung von cURL im Aktualisierungsprozess für mehrere Wordpress-Sites zurückzuführen. Standardmäßig versucht cURL, das SSL-Zertifikat mit einer akzeptierten Zertifizierungsstelle in einem Paket von Zertifizierungsstellenzertifikaten zu überprüfen.

Sie haben mindestens vier Möglichkeiten:

  1. Stellen Sie sicher, dass Sie die letzte Version von cURL in Ihrer PHP -Installation verwenden, um sicherzustellen, dass der Satz der verwendeten Zertifizierungsstellen aktualisiert wird.

  2. Legen Sie den Pfad zu Ihrem SSL-Zertifikat manuell fest:

    curl_setopt($connection, CURLOPT_SSL_VERIFYPEER, 1);curl_setopt($AuthNetConn, CURLOPT_CAINFO, "path:/ca-bundle.crt");

  3. Umgehen Sie die SSL-Überprüfung:

    curl_setopt($connection, CURLOPT_SSL_VERIFYPEER, false);

  4. Überprüfen Sie, ob Ihr SSL-Zertifikat gültig und von einer akzeptierten Zertifizierungsstelle ausgestellt ist.

Für die Optionen 2 und 3 müssen Sie möglicherweise die von WordPress verwendeten Argumente filtern, um die http-Anforderungen zu erstellen.
Siehe @ brasofilos Antwort, es könnte funktionieren.

Auf jeden Fall sollten Sie untersuchen, warum die SSL-Überprüfung fehlschlägt, anstatt sie nur zu umgehen.

2
cybmeta

In vielen Fällen können Sie den folgenden Filter verwenden, um die lokale SSL-Überprüfung zu deaktivieren. Dies ist nützlich für selbstsignierte Zertifikatfehler.

add_filter('https_local_ssl_verify', '__return_false');

Die aktuelle Version v4.3.0 bestimmt, ob eine Anfrage "lokal" ist, und zwar in wp-includes/class-http.php

// Determine if this request is to OUR install of WordPress.
$homeURL = parse_url( get_bloginfo( 'url' ) );
$r['local'] = 'localhost' == $arrURL['Host'] || ( isset( $homeURL['Host'] ) && $homeURL['Host'] == $arrURL['Host'] );
unset( $homeURL );

In einigen Fällen funktioniert die lokale Überlegung möglicherweise nicht. In diesem Fall können Sie den umfassenderen Filter add_filter('https_ssl_verify', '__return_false'); in Betracht ziehen.

Bei Installationen an mehreren Standorten mit gemischten Schemata für http und https finden Sie möglicherweise weitere Informationen zu trac. upgrade.php schlägt mit gemischtem HTTPS (SSL) und einfachen HTTP-Sites fehl.

Unabhängig davon besteht eine manuelle Problemumgehung darin, den /wp-admin/upgrade.php jeder untergeordneten Site zu besuchen.

Eine andere verwandte Beschreibung, http://scottnelle.com/683/ssl-error-upgrade-wordpress-multisite-network/

1
here

Wie bereits erwähnt Scott Nelle schlägt vor:

Erstellen Sie eine Datei in wpcontent/mu-plugins/ und nennen Sie sie network-upgrade-ignore-ssl.php. Fügen Sie Folgendes in die Datei ein:

<?php
   add_filter('https_ssl_verify', '__return_false');
   add_filter('https_local_ssl_verify', '__return_false');
?>
0
habakuk

Es ist möglich, die Datenbank für jede untergeordnete Site einzeln zu aktualisieren/zu aktualisieren, indem Sie Folgendes besuchen:

https://rootsite/subsite/wp-admin/upgrade.php

Siehe auch zugehöriges Core-Trac-Ticket. Die Datenbank wird in Multisite-Umgebungen nicht aktualisiert, wenn Loopback deaktiviert ist.

0
here