我需要一些帮助来建立一个通信渠道,使用带有相互身份验证的SSLv3,libcurl和智能卡来使用Web服务,它将存储客户端证书,密钥对,并负责签名,加密等。< / p>
出于测试目的,不使用智能卡,以下简要代码顺利运行:
....
(SOAP message configurations)
....
curl_easy_setopt (curl, CURLOPT_USE_SSL, CURLUSESSL_ALL);
curl_easy_setopt (curl, CURLOPT_SSLVERSION, 3);
curl_easy_setopt (curl, CURLOPT_SSL_VERIFYPEER, 1);
curl_easy_setopt (curl, CURLOPT_SSL_VERIFYHOST, 2);
curl_easy_setopt (curl, CURLOPT_SSLCERT, "clientCertificateFile");
curl_easy_setopt (curl, CURLOPT_KEYPASSWD, "testPrivateKeyPass");
curl_easy_setopt (curl, CURLOPT_SSLKEY, "testPrivateKeyFile");
curl_easy_setopt (curl, CURLOPT_CAINFO, "CAcertificateFile");
curl_easy_setopt (curl, CURLOPT_URL, "URLtoWebService");
curl_easy_perform (curl);
运行此代码后,我可以使用SSLv3建立通信并从Web服务获得预期的响应。但是,我需要使用智能卡建立此安全通道。我可以免费访问以下信息:
“testPrivateKeyFile”和“testPrivateKeyPass”是仅用于测试的临时文件,应由智能卡替换。
我的疑问是:如何使用智能卡替换libcurl设置过程中的私钥和密码?
智能卡不允许按预期访问私钥,只允许访问公钥。我可以使用私钥发送到要签名或加密的智能卡数据,并获得生成的缓冲区。
有没有办法重定向部分SSLv3连接握手才能使用我的智能卡? lib ssl或libcurl中的一些设置?
感谢收听!