相互認証、libcurl、およびクライアント証明書、キーペアを保存し、署名、暗号化などを担当するスマートカードを使用して、SSLv3 を使用して Web サービスを使用するための通信チャネルを確立するための助けが必要です。
テスト目的で、スマート カードを使用しない場合、次の簡単なコードはスムーズに実行されます。
....
(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 サービスから予期される応答を取得できます。ただし、スマート カードを使用してこの安全なチャネルを確立する必要があります。以下の情報に自由にアクセスできます。
- "clientCertificateFile" - スマート カードに PEM 形式で保存されます。アクセス機能を介して読み取ることができます。
- 「CAcertificateFile」 - PEM 形式でディスクに保存されます。アクセス機能を介して読み取ることができます。
- 「URLtoWebService」 - アプリケーションに保存されます。
「testPrivateKeyFile」および「testPrivateKeyPass」は、テスト専用の一時ファイルであり、スマート カードに置き換える必要があります。
私の疑問は次のとおりです。libcurlセットアッププロセスでスマートカードを使用して秘密鍵とパスワードを置き換える方法は?
予想どおり、スマート カードは秘密鍵へのアクセスを許可せず、公開鍵へのアクセスのみを許可します。秘密鍵を使用して、署名または暗号化するデータをスマート カードに送信し、結果のバッファーを取得できます。
SSLv3 接続ハンドシェイクの一部をリダイレクトしてスマート カードを使用する方法はありますか? lib ssl、またはlibcurlの設定?
聞いてくれてありがとう!