Pergunta

Eu gostaria de manter a minha certificados de raiz de corrente para uso com o cURL e o PHP interno curl de comando, no entanto, não há nenhum parâmetro atualmente para baixar o arquivo atual requer uma adequada ligação segura e para mantê-lo atual.

E exemplo de uso curl em PHP para uma conexão segura, que requer um arquivo chamado cacert.pem (PEM codificado cadeia de certificados para validar conexões remotas) é da seguinte maneira :

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://www.google.com");
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($ch, CURLOPT_CAINFO, "pathto/cacert.pem");
curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);
if (!($data = curl_exec($ch))) {
    echo "No data received";
} else {
    echo strlen($data) + " total byte(s)";
}
curl_close($ch);

Enquanto a maioria das pessoas simplesmente definir CURLOPT_SSL_VERIFYPEER para false, e, assim, ignorar o problema, o que é ruim .Você pode veja aqui onde uma autoridade de certificação mostra que se você não tiver este arquivo atual, a única maneira de se conectar a um servidor seguro é desabilitar a verificação de certificados e mais alerta para as implicações por trás de desativação de ponto de verificação.

O que eu estou pedindo é para uma forma legítima de manter uma cópia local do cacert.pem de modo que quando eu uso curl em PHP para se comunicar com outros servidores, para que eu possa continuar a fazê-lo com segurança .

Este não é um pedido para um recurso externo ou fora do local de ligação, etc, no entanto, devido à natureza do problema, é provável que pode ser a ÚNICA forma de resolver isso como exigir a contínua atualização como cadeias de certificados revogados.Até à data, não há nenhuma maneira de obter esse arquivo como parte da distribuição de enrolar a si próprio, ou php, ou a biblioteca curl para php e continuar a mantê-lo.Enquanto é desanimador que isso não é algo que uma simples atualização de comando como curl --update-root-ca seria bom, não existe em qualquer forma.

Foi útil?

Solução

Desde inicialmente a escrever este artigo, (e, portanto, esta reconfiguração), eu era capaz de resolver o meu próprio problema, incluindo links diretamente para o apenas fonte legítima para manter este arquivo que é fornecido no site mantido pelo autor curl no este local

Além disso, como a tecnologia está avançando a esta pergunta foi atualizado para mostrar como usar curl em PHP e forçar TLS v1.2 conexão (algo que certos provedores de transações exigem ou recomendam e não pode fornecer informações sobre como fazer isso).

Sobre autoridades de certificação, existem algumas autoridades de raiz, tais como :

  • A Symantec
  • RapidSSL
  • thawte
  • GeoTrust
  • Comodo

Assim como outras autoridades, pela sua natureza, tais como

  • Microsoft
  • Mozilla
  • O Google

O que pode ser um quadro para quem procura manter a sua própria cacert.pem.Tenha em mente que você precisará fazer o download de sua (listas de revogação de certificados que foram violadas ou expirados) dos respectivos crl para manter um bom mecanismo de confiança, enquanto você deve ser capaz de fugir com apenas baixar o seu certificado de raiz cadeias e a usá-los como um local authorative arquivo como o cacert.pem.

Outras dicas

cacert.pem é usado por curl.Não há nenhuma autoridade final sobre quais certificados são confiáveis, mas listas usadas por navegadores da web são uma boa fonte.Essas listas são atualizadas constantemente devido a CA e mudanças para práticas de segurança.

Os autores de curl manter uma ferramenta que pode extrair um cacert.pem a partir do Firefox, e pós razoavelmente up-to-date de saída em seu site:

  • o cacert.pem gerado pelos autores do curl
  • caextract:para mais preocupada com a segurança, faça o download da ferramenta, inspecione o código fonte e executá-lo contra o seu próprio Firefox.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top