Background: No PHP, ativar CURLOPT_SSL_VERIFYPEER
e fazer muitas solicitações acaba deixando muitas cópias do pacote da CA na memória ( curl_close
não ajuda). Uma solução alternativa é usar um pacote mínimo da autoridade de certificação, retirando o certificado de autoridade de certificação relevante de /etc/pki/tls/certs/ca-bundle.crt
e especificando o caminho resultante em CURLOPT_CAINFO
.
Problema: A parte que falta é como integrar isso automaticamente no processo de lançamento, para que
Isso é necessário para garantir que, se o host alterar o provedor de certificados (raro e improvável), ainda possamos alterar facilmente nosso pacote.
Como posso fazer o último ponto de forma confiável? openssl s_client -connect example.com:443 -showcerts
não mostra nem a série do certificado de verificação nem seu conteúdo completo. As propriedades C / O / CN devem obviamente ser exclusivas no pacote CA, mas parece difícil confiar na análise disso e não sei como consultar confiavelmente (em vez de adicionar fragilidade por grep
ping) o pacote CA para uma combinação de C / O / CN.
Versões relevantes:
# php --version | head -n1
PHP 5.4.16 (cli) (built: Nov 6 2016 00:29:02)
# rpm -qi libcurl | grep ^Version
Version : 7.29.0
# openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013
# uname --kernel-name --kernel-release --kernel-version --processor
Linux 3.10.0-514.16.1.el7.x86_64 #1 SMP Wed Apr 12 15:04:24 UTC 2017 x86_64
Tags certificates