¿Cómo puedo mantener mi cacert.pem actual por razones de seguridad cuando se utiliza curl?
-
21-12-2019 - |
Pregunta
Me gustaría mantener mis certificados raíz de corriente para uso con cURL y PHP interna curl
de comandos, sin embargo no hay ningún parámetro en la actualidad para descargar el archivo actual se requiere para una adecuada conexión segura y mantenerla actualizada.
Y ejemplo de uso de curl
en PHP para una conexión segura que requiere un archivo llamado cacert.pem
(PEM codificado de la cadena de certificados para validar las conexiones remotas) es como sigue :
$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);
Mientras que la mayoría de la gente simplemente un conjunto de CURLOPT_SSL_VERIFYPEER
a false, y por lo tanto ignorar el problema, lo que es malo .Usted puede aquí puedes ver un certificado de la autoridad de muestra que si usted no tiene este archivo actual, la única forma de conectarse a un servidor seguro es para deshabilitar la comprobación de certificados y, además, advierte de las consecuencias detrás de la desactivación de los pares de verificación.
Lo que estoy pidiendo es una forma legítima para mantener una copia local de cacert.pem
así que cuando yo uso curl
en PHP para comunicarse con otros servidores, puedo seguir haciéndolo de forma segura .
Esto no es una solicitud de un recurso externo o fuera del sitio de enlace, etc, sin embargo debido a la naturaleza del problema, es probable que puede ser la ÚNICA manera de resolver esto, ya que sería necesario la actualización continua como cadenas de certificados revocados.Hasta la fecha, no hay manera de obtener este archivo, ya sea como parte de la distribución de curl de sí mismo, o php, o la librería curl de php y continuar para mantener la.Si bien es desalentador el hecho de que esto no es algo que un simple comando de actualización como curl --update-root-ca
sería bueno, que no existe en ninguna forma.
Solución
Ya que inicialmente la redacción de este artículo, (y por lo tanto, esta reescritura), pude resolver mi problema mediante la inclusión de enlaces directamente a la sólo fuente legítima para mantener este archivo que se proporciona en el sitio mantenido por el autor de curl
en esta ubicación
Además, como la tecnología está avanzando a esta pregunta se ha actualizado para mostrar cómo utilizar curl
en PHP y fuerza TLS v1.2 conexión (algo que determinadas transacciones de los proveedores exigen o recomiendan y no pueden proporcionar a la información sobre cómo hacer esto).
Con respecto a las entidades de certificación, hay un par de claves de la raíz a las autoridades, tales como :
- Symantec
- RapidSSL
- thawte
- GeoTrust
- Comodo
Así como otras autoridades, por su naturaleza, tales como
- Microsoft
- Mozilla
Que puede ser un marco para cualquiera que quiera mantener su propia cacert.pem.Tenga en cuenta que usted necesita para descargar su (listas de revocación de certificados que han sido violadas o caducado) a partir de la respectiva lista de revocaciones de certificados para mantener una adecuada confianza mecanismo, mientras que usted debería ser capaz de salirse con la descarga de su certificado raíz de las cadenas y los uso como local conserve su autoridad de archivos como su cacert.pem.
Otros consejos
cacert.pem
es utilizado por curl
.No hay ninguna autoridad máxima en que los certificados son para ser de confianza, pero las listas utilizadas por los navegadores web son una buena fuente.Estas listas se actualizan constantemente debido a la CA de cambios y cambios a las prácticas de seguridad.
Los autores de curl
mantener una herramienta que puede extraer un cacert.pem
desde Firefox, y después de una razonable para arriba-a-fecha de salida en su sitio web:
- cacert.pem generados por los autores de
curl
- caextract:para los más consciente de la seguridad, de descargar la herramienta, inspeccionar el código fuente y ejecutar en contra de su propio Firefox.