Estoy utilizando el siguiente recorte para configurar el certificado y la clave para la autenticación del cliente.No se puede usar libcurl para acceder a un sitio que requiere la autenticación del cliente
curl_easy_setopt(curl,CURLOPT_SSLCERT,"clientCert.pem");
curl_easy_setopt(curl,CURLOPT_SSLCERTPASSWD,"changeit");
curl_easy_setopt(curl,CURLOPT_SSLCERTTYPE,"PEM");
curl_easy_setopt(curl,CURLOPT_SSLKEY,"privateKey.pem");
curl_easy_setopt(curl,CURLOPT_SSLKEYPASSWD,"changeit");
curl_easy_setopt(curl,CURLOPT_SSLKEYTYPE,"PEM");
El certificado no tiene una contraseña, no sé qué en la tierra existe la opción SSLCERTPASSWD, que acaba de proporcionar un valor ficticio. Cuando ejecuto el programa en Linux me aparece un código de error de 58 y un mensaje de error incapaz de fijar archivo de clave privada: 'privateKey.pem' tipo PEM
En Windows sin embargo me sale no puede utilizar certificados de cliente (no se ha encontrado ninguna clave o una contraseña incorrecta?)
Parece sugerir que el certificado y la clave no coinciden, pero no sé cómo. He extraído tanto el certificado como la clave de un archivo p12 usando comandos openssl. El comando que utiliza para extraer la clave es
openssl.exe pkcs12 -in client.p12 -nocerts -out privateKey.pem
y el comando utilizado para extraer el CERT es
openssl.exe pkcs12 -in client.p12 -nokeys -out clientCert.pem
El archivo de p12 se ha utilizado con éxito en un navegador para acceder a la url de autenticación de cliente. Por favor ayuda antes de dispararme.
Editar: Aquí está la prueba de que la clave privada y el certificado se corresponden entre sí:
[[email protected] ~/curlm]$ openssl x509 -noout -modulus -in clientCert.pem | openssl md5
d7207cf82b771251471672dd54c59927
[[email protected] ~/curlm]$ openssl rsa -noout -modulus -in privateKey.pem | openssl md5
Enter pass phrase for privateKey.pem:
d7207cf82b771251471672dd54c59927
¿Por qué no puede funcionar?
Estoy enfrentando el mismo resultado con el curl de la línea de comandos. Concatené el certificado y la clave del cliente en un archivo y lo intenté de la siguiente manera: curl --cert concatenatedCert.pem --cert-type PEM --cacert cabundle.crt https: // inaveo: 8775/DataIntegrationService/WebService/WS_test/ Enter Frase de contraseña PEM: curl: (58) no se puede establecer el archivo de clave privada: tipo'concatenatedCert.pem 'PEM –