> From: curl-library [[email protected]] on behalf of Hölzl, 
> Dominik [[email protected]]
> Subject: libcURL - OSX 10.10 - client certificates (CURLOPT_SSLCERT)
>
> Has anybody experience with client certificates (CURLOPT_SSLCERT) on Mac OSX 
> (10.10)?

Yes, but not on OSX specifically.
 
> I could not find a callback method which indicates the requirement of a 
> client certificate for a request (a point where I can ask the user to select 
> one of the in the key store installed client certificates).

Use CURLOPT_SSL_CTX_FUNCTION to set a callback that gets called during setup of 
an SSL connection. From this function, use SSL_CTX_set_client_cert_cb to set 
the callback you're looking for:

int sslClientCertCallback(SSL *ssl, X509 **x509, EVP_PKEY **pkey)
{
    // At this point you can set the client cert immediately by filling in x509 
and pkey, or return a code to suspend the handshake if you need to prompt for 
the cert asynchronously. See 
https://www.openssl.org/docs/ssl/SSL_CTX_set_client_cert_cb.html.
}

CURLcode sslContextCallback(CURL *handle, SSL_CTX *context, void *userdata)
{
    SSL_CTX_set_client_cert_cb(context, &sslClientCertCallback);
    return EOK;
}

curl_easy_setopt(handle, CURLOPT_SSL_CTX_FUNCTION, &sslContextCallback);
curl_easy_setopt(handle, CURLOPT_SSL_CTX_DATA, userdata);

> If I want to use another client certificate (by setting another CN) within 
> the same process but for a new request, cURL seems to ignore this and always 
> uses the certificate used in the first successful
> request. How can I clear this SSL-cache? I have tried 
> CURLOPT_FRESH_CONNECT/TRUE and CURLOPT_SSL_SESSIONID_CACHE/FALSE without 
> effect.
>        
> If I do not set CURLOPT_SSLCERT for a request, cURL seems to take a random 
> installed certificate (not the certificate configured by an identity 
> preference in the key store) or it randomly throws a
> CURLE_SSL_CONNECT_ERROR.

I've never seen these issues.

Joe
-------------------------------------------------------------------
List admin: http://cool.haxx.se/list/listinfo/curl-library
Etiquette:  http://curl.haxx.se/mail/etiquette.html

Reply via email to