2011-10-24 4 views
3

私はLibCurlを使用するCアプリケーションを持っています(LibCurlはWebサーバーとのHTTP接続を行うC APIです)。 LibCurlを使用すると、クライアント証明書を必要とするHTTPSサーバーからファイルをダウンロードする必要があります。DoD CACカードのクライアント証明書を取得

これまでのところ、私たちの技術的ソリューションは素晴らしいです。

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

DoD CACカードからクライアント証明書を検索または参照する方法がわかりません。どんな助力も非常に感謝しています。ありがとう。

答えて

3

アクティブクライアントがCACカード証明書をウィンドウに公開すると、証明書をストアにエクスポートする必要があります。ローカル証明書ストアから.pfxまたは.p7b形式のファイルへの証明書のエクスポートを自動化する必要があります。おそらく.cer、それが可能かどうかわかりません。保護されている必要があります。

私はあなたが中間の中間層(証明書ストアのような)なしでCACカードから直接行うことはできないと思います。

+0

CACカードを挿入すると、クライアント証明書が自動的に証明書ストアにコピーされると言っていますか?私は最終的に.pem形式の証明書が必要です(可能ならば)。 – kmehta

+0

Windows Credential Managerはどうですか? – bahrep

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); 

ある輸出方法は、私は1つは、あなたが参照しているフォーマットであるかどうかわからないにエクスポートするために、様々な種類があります。これはあなたがプレイする必要があるものです。あなたがCでそれらのライブラリを使うことができるかどうかは確かではありませんが、あなたがそれらを投稿することができる場合に備えてです。

関連する問題