Estoy tratando de consumir una API REST que requiere autenticación de certificado de cliente en mi código PHP. Tengo el certificado convertido en formato .pem, .pfx, .crt, .key y .keystore La API también requiere autenticación básica usando nombre de usuario y contraseña
Probé una implementación diferente en el servidor, pero sigo recibiendo el error " no se puede cargar el certificado del cliente: -8018 (SEC_ERROR_UNKNOWN_PKCS11_ERROR "
Es una caja de Linux, RedHat, que se ejecuta en Apache y PHP.
Aquí está el fragmento de código que he implementado actualmente
$username="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; $password="bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"; $certFile = "/etc/ssl/certs/cert/example.pem"; $certPass = "examplepass"; $keyFile = "/etc/ssl/certs/cert/example.key"; $caFile = "/etc/ssl/certs/cert/example.crt"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,'https://www.example.com/some_protected_page'); curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array( "Content-type: $content_type", )); // The --cert option curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //curl_setopt($ch, CURLOPT_CAINFO, $certFile); curl_setopt($ch, CURLOPT_SSLCERTTYPE, 'PEM'); curl_setopt($ch, CURLOPT_SSLCERT, $certFile); curl_setopt($ch, CURLOPT_SSLCERTPASSWD, $certPass); //curl_setopt($ch, CURLOPT_SSLKEY, $keyFile); //curl_setopt($ch, CURLOPT_SSLKEYPASSWD, $certPass); curl_setopt($ch, CURLOPT_TIMEOUT, 300); $adata = curl_exec($ch);