2012-03-19 11 views
0

電子メールを暗号化するためにADサーバーからc#を使用してX509公開証明書をフェッチできる方法はありますか。 今、私は、ローカルストアを使用して、証明書を受け取り、メールを暗号化しています。ADサーバーからX509証明書を取得する

static public X509Certificate2 GetRecipientCertPublic(string recipientName) 
    {   

     X509Store storeAddressBook = new X509Store(StoreName.AddressBook, StoreLocation.CurrentUser); 
     storeAddressBook.Open(OpenFlags.ReadOnly); 
     X509Certificate2Collection certColl = storeAddressBook.Certificates.Find(X509FindType.FindBySubjectName, recipientName, false); 
     storeAddressBook.Close(); 
     if (certColl.Count != 0) 
     { 

      return certColl[0]; 
     } 
     else 
     { 
      return null; 
     } 
    } 

Outlookの動作が異なることがわかります。レシピエントの公開証明書がローカルマシン証明書マネージャーに存在しない場合でも。組織の中央サーバーまたは広告サーバー(私はそれについてはあまりよくわかっていません)から公開証明書を受け取り、暗号化されたメールを送信することができます。

答えて

4
 DirectoryEntry de = new DirectoryEntry("LDAP://#####"); //Where ##### is the name of your AD server 
     DirectorySearcher dsearch = new DirectorySearcher(de); 
     dsearch.Filter = "(cn=#####)"; //Search how you want. Google "LDAP Filter" for more. 
     SearchResultCollection rc = dsearch.FindAll(); 
     X509Certificate stt = new X509Certificate(); 

     foreach (SearchResult r in rc) 
     { 

      if (r.Properties.Contains("userCertificate")) 
      { 
       Byte[] b = (Byte[])r.Properties["userCertificate"][0]; //This is hard coded to the first element. Some users may have multiples. Use ADSI Edit to find out more. 
       X509Certificate cert1 = new X509Certificate(b); 
      } 
     } 
+0

こんにちは、私は答えをありがとう、私は年後に質問を掲載していた。私がネットを検索していたときに同じ質問にリダイレクトされました。 :-) –

+0

こんにちはBlair、とにかくPrivate Certificateもダウンロードできますか? –

関連する問題