es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Equivalente de un comando CURL con certificados en PHP

Necesito saber cómo escribir el siguiente comando CURL en PHP. Lo he intentado de varias formas y he buscado en muchos artículos aquí en StackOverflow. He intentado adaptar el código, pero nada funciona realmente:

curl -v --insecure --cert public-certified-with-chain.pem --key private-key.key -nodes GET "MY_URL" "accept: */*

He logrado llegar a esta etapa, pero no funciona:

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://...');
curl_setopt($ch, CURLOPT_VERBOSE, 1);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);

$result = curl_exec($ch);

echo $result;

El código anterior está simplificado, devuelve un resultado, pero muestra “No autorizado”.

¿Cómo puedo adaptarlo para adjuntar los archivos?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para adjuntar los archivos de certificado y clave privada en el comando CURL, puedes utilizar las opciones CURLOPT_SSLCERT y CURLOPT_SSLKEY en la función curl_setopt de PHP:

    $ch = curl_init();
    
    curl_setopt($ch, CURLOPT_URL, 'MI_URL');
    curl_setopt($ch, CURLOPT_VERBOSE, 1);
    
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);
    
    curl_setopt($ch, CURLOPT_SSLCERT, 'certificado-publico-con-cadena.pem');
    curl_setopt($ch, CURLOPT_SSLKEY, 'clave-privada.key');
    
    $resultado = curl_exec($ch);
    
    echo $resultado;
    

    Esto debería adjuntar los archivos de certificado y clave privada a la solicitud CURL y, con suerte, resolver el error de “No autorizado”.

Comments are closed.