Erro SSL de atualização do banco de dados multilíngües

3

Eu atualizei minha configuração do WordPress para 3.6.1. E depois disso, quando eu faço Network Upgrade > Database Upgrade está mostrando:

  

Atenção! Problema ao atualizar http://www.example.com/site1 . Seu servidor   talvez não consiga se conectar a sites em execução.

     

Mensagem de erro: o certificado peer não pode ser autenticado com o CA conhecido   certificados

O que aconteceu por favor?

Info

  • Atualmente, estou executando o site sob o SSL (Trusted Wildcard SSL) ( não auto-assinado ), mas instalado apenas no balanceador de carga. (Apache Servers não precisa (precisa) ter o Cert instalado, aparentemente.) Esta é a causa raiz?
  • O banco de dados está no Amazon RDS (com as configurações padrão), que não está com SSL lá. *
por 夏期劇場 23.09.2013 / 11:48

8 respostas

1

Se possível, você deve tentar corrigir a causa desse erro - certificados SSL inválidos. Mas há alguns casos em que isso não é possível ou desejável. Um dos mais óbvios é sites de desenvolvimento usando certificados SSL autoassinados.

Uma maneira de contornar isso é definir $ ssl_verify como false antes da linha 1161 de wp-includes / class-http.php:

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

A maneira como fiz isso no passado foi adicionando:

$ssl_verify = false;

Para a linha 1159, antes de fazer uma atualização de vários sites e removê-la depois. Parece que deveria haver uma maneira muito mais sofisticada de fazer isso. Parece a partir do código em torno dele que, a julgar pelo código em torno dele, você deve ser capaz de analisar o paramater sslverify = false, mas parece não funcionar (provavelmente porque o wrapper de atualização não passa pelos parâmetros).

Para evitar alterações no Core, eu não recomendo essa alteração depois de concluir a atualização.

    
por Jona 28.11.2013 / 13:39
7

Eu não sei se isso vai ajudar ou não, mas vale a pena tentar. Crie um Deve usar o plugin e solte essas linhas, veja os comentários do código:

<?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,
  );

*/
    
por brasofilo 23.09.2013 / 13:01
2

Esse erro provavelmente se deve ao uso de cURL no processo de atualização multisite do Wordpress. Por padrão, o cURL tentará verificar o certificado SSL com uma autoridade de certificação aceita em um conjunto fornecido de certificados de autoridade de certificação.

Você tem pelo menos quatro opções:

  1. Certifique-se de estar usando a última versão do cURL na sua instalação do PHP para garantir que o conjunto de CA usado seja atualizado.

  2. Defina manualmente o caminho para o seu certificado SSL:

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

  3. Ignorar a verificação SSL:

    curl_setopt($connection, CURLOPT_SSL_VERIFYPEER, false);

  4. Verifique se o seu certificado SSL é válido e emitido por uma autoridade de certificação aceita.

Para as opções 2 e 3, talvez seja necessário filtrar os argumentos usados pelo WordPress para fazer as solicitações http.
Veja a resposta do @ brasofilo, pode funcionar.

De qualquer forma, você deve investigar por que a verificação do SSL está falhando, em vez de apenas ignorá-lo.

    
por cybmeta 23.09.2013 / 12:09
1

Em muitos casos, você pode usar o seguinte filtro para desativar a verificação SSL local. Isso é útil para erros de certificados autoassinados.

add_filter('https_local_ssl_verify', '__return_false');

A versão atual v4.3.0 determina se uma solicitação é "local" com o seguinte, em 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 );

Em alguns casos, a consideração local pode não funcionar e, nesse caso, você pode considerar o filtro mais inclusivo, add_filter('https_ssl_verify', '__return_false');

Instalações multisite com esquemas mistos http e https podem encontrar mais informações sobre o trac, upgrade.php falha com misturas HTTPS (SSL) e sites HTTP simples

Independentemente disso, uma solução manual é visitar o site de cada criança /wp-admin/upgrade.php

Outra descrição relacionada, enlace

    
por here 27.08.2015 / 21:13
0

É possível atualizar / atualizar o banco de dados para cada site filho individualmente, visitando:

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

Consulte também o ticket do núcleo do trac relacionado, O banco de dados não é atualizado em vários sites se o loopback estiver desativado

    
por here 01.05.2015 / 04:24
0

Como mencionado antes, Scott Nelle sugere isto:

Crie um arquivo em wpcontent/mu-plugins/ e nomeie-o como network-upgrade-ignore-ssl.php . Coloque o seguinte no arquivo:

<?php
   add_filter('https_ssl_verify', '__return_false');
   add_filter('https_local_ssl_verify', '__return_false');
?>
    
por habakuk 10.12.2015 / 23:24
-1

Estou usando o Wordpress 3.8.1 e alterei a linha 67 do wp-admin / network / upgrade.php e adicionei , 'sslverify' = > false assim:

--- a/wp-admin/network/upgrade.php      2014-03-29 14:31:28.081943490 +0100
+++ b/wp-admin/network/upgrade.php      2014-03-29 14:30:52.785947460 +0100
@@ -64,7 +64,7 @@
                        $upgrade_url = admin_url( 'upgrade.php?step=upgrade_db' );
                        restore_current_blog();
                        echo "<li>$siteurl</li>";
-                       $response = wp_remote_get( $upgrade_url, array( 'timeout' => 120, 'httpversion' => '1.1' ) );
+                       $response = wp_remote_get( $upgrade_url, array( 'timeout' => 120, 'httpversion' => '1.1', 'sslverify' => false ) );
                        if ( is_wp_error( $response ) )
                                wp_die( sprintf( __( 'Warning! Problem updating %1$s. Your server may not be able to connect to sites running on it. Error message: <em>%2$s</em>' ), $siteurl, $response->get_error_message() ) );
                        do_action( 'after_mu_upgrade', $response );

Desta forma, a verificação só é desativada neste caso específico e, com um arquivo de correção, você pode aplicar facilmente as alterações após um upgrade:

# go to the directory with wp-admin/ in it
cd wordpresshomedir

# without --dry-run if there are no errors
patch --dry-run -p1 < ../disable-sslverify.patch
    
por Ronny Lindner 29.03.2014 / 14:54
-2

A solução certa é verificar o tempo do servidor. Se estiver errado, o SSL não funciona bem.

    
por borayeris 12.12.2014 / 01:41