O certificado SSL para o host não pôde ser verificado

4

Estou recebendo este erro em um arquivo de log criado pelo WooCommerce

"O certificado SSL para o host não pôde ser verificado."

O erro está sendo gerado pelo WordPress 'file /wp-includes/class-http.php

enlace

Eu tentei definir o abaixo em meu arquivo de funções para desativar a verificação de SSL, mas ainda estou recebendo o erro

add_filter( 'https_ssl_verify', '__return_false' );
add_filter( 'https_local_ssl_verify', '__return_false' );

Na linha 834 de class-http.php , testei a alteração dessa linha

$connect_host = $secure_transport ? 'ssl://' . $connect_host : 'tcp://' . $connect_host;

Para

$connect_host = $secure_transport ? 'sslv3://' . $connect_host : 'tcp://' . $connect_host;

A alteração é sslv3

Eu preciso disso para me conectar ao authorize.net. Existe um filtro que eu possa usar, para substituir o método na classe, em caso afirmativo, qual? Eu sei o suficiente para não modificar o código principal, isso foi apenas para testes.

Obrigado

    
por Anagio 04.06.2014 / 17:43

1 resposta

1

Eu não recomendaria a desativação da verificação de SSL - isso deixa o seu sistema vulnerável a possíveis invasores. conforme explicado nesta postagem SO . Além disso, o uso de sslv3 provavelmente está causando esse problema agora ESPECIFICAMENTE porque Authorize.net identificou-o como vulnerável ao compromisso POODLE .

Desde que isso aconteceu, muitos fornecedores removeram os pacotes de certificados CA authorize.net mais antigos de seus pacotes OpenSSL por meio de atualizações.

A causa do seu problema parece ser que o seu aplicativo parece não conseguir localizar onde encontrar o pacote atualizado de certificados de CA raiz e, de acordo com o tópico acima, os originais foram preteridos pelo Authorize.net:

De acordo com a documentação do openssl do Manual do PHP no parâmetro cainfo :

  

Ao chamar uma função que verificará uma assinatura / certificado, o   O parâmetro cainfo é uma matriz contendo nomes de arquivos e diretórios   especificar os locais dos arquivos confiáveis da CA. Se um diretório é   especificado, deve ser um diretório com hash formado corretamente como   comando openssl usaria.

Isso sugere que você possa fazer o download de um pacote atualizado de certificados de CA (ou apenas obter o específico que precisa para se conectar ao authorize.net.

O projeto do github para o php-sdk do Authorize.net inclui uma coleção de certificados atualizada que deve resolver o problema vendo se você usa o pacote recém atualizado (a partir de 4 dias atrás) .

Não está claro a partir dos seus exemplos de código, se você já usa o SDK deles. Se não, você deve ser capaz de baixar esse pacote e fazer referência ao caminho do pacote atualizado de acordo com os exemplos estendidos usando o cainfo parameter em quaisquer funções que você usa quando reativa a verificação.

Se sim, você pode querer atualizar seu composer.json para pegar a última versão do SDK.

    
por Bryan 'BJ' Hoffpauir Jr. 12.05.2015 / 08:40

Tags