3

LibCurl を使用する C アプリケーションがあります (LibCurl は Web サーバーへの HTTP 接続を確立する C API です)。LibCurl を使用して、クライアント証明書を必要とする HTTPS サーバーからファイルをダウンロードする必要があります。

これまでのところ、当社の技術ソリューションはうまく機能しています。

私の問題は、使用する必要があるクライアント証明書が DoD CAC カードに存在することです。クライアント証明書を DOD CAC カードから (C アプリ内から) 取り出して、ファイルに書き込むか、CAC 上のファイルを参照するだけでよい必要があります。この書き込まれたファイルまたは参照されたファイルは、HTTPS 接続でクライアント証明書として指定されます。

DoD CAC カードからクライアント証明書を検索または参照する方法がわかりません。どんな助けでも大歓迎です。ありがとう。

4

2 に答える 2

3

activeClient が CAC カード証明書を Windows に発行するとき、証明書をストアにエクスポートする必要があります。ローカル証明書ストアから .pfx や .p7b 形式などのファイルへの証明書のエクスポートを自動化する必要がある場合があります。.cer かもしれませんが、それが可能かどうかはわかりません。pwd で保護する必要があります。

中間層(証明書ストアなど)なしでCACカードから直接実行できるとは思いません。

于 2011-10-24T16:53:44.670 に答える
0

これは C# の方法です。C で役立つ可能性があります。私は C コードにあまり詳しくありません。

using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
private static X509Certificate GetClientCert()
{
  X509Store store = null;
  try
   {
    store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
    store.Open(OpenFlags.OpenExistingOnly | OpenFlags.ReadOnly);

    var certs = store.Certificates.Find(X509FindType.FindBySubjectName, "Integration Client Certificate", true);
    if (certs.Count == 1)
    {
       var cert = certs[0];
       return cert;
    }
   }
   finally
   {
    if (store != null)
    store.Close();
   }

 return null;
}

証明書を取得してエクスポートするコードは次のとおりです。

//This will bring up the selection prompt to select your cert


X509Certificate c = GetClientCert();


//The password should be the pin converted to a secure string variable.
//note the code above will not prompt for a pin if you want this you will have to build the prompt yourself.  It will only select the certificate.

c.Export(X509ContentType.Cert, securestring password);

エクスポート方法には、エクスポートするさまざまなタイプがあります。あなたが参照しているフォーマットになるかどうかはわかりません。これはあなたが遊ぶ必要があるものです。これらのライブラリを C で使用できるかどうかさえわかりませんが、投稿していただければ幸いです。

于 2015-07-23T16:26:59.373 に答える