получение сертификатов X509 с сервера AD - PullRequest
0 голосов
/ 19 марта 2012

Есть ли какой-нибудь способ, которым мы можем получить публичные Cetrificates X509, используя c # с сервера AD для шифрования электронной почты. Сейчас я использую локальный магазин для получения сертификатов и шифрования почты.

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 отличается. Даже если общедоступный сертификат рецепта отсутствует в локальном диспетчере сертификатов компьютеров. он может получить общедоступный сертификат с центрального сервера организации или с рекламного сервера (я не очень уверен в этом) и отправить зашифрованную почту.

1 Ответ

5 голосов
/ 27 июня 2012
// Where ##### is the name of your AD server
DirectoryEntry de = new DirectoryEntry("LDAP://#####");
DirectorySearcher dsearch = new DirectorySearcher(de);

//Search how you want.  Google "LDAP Filter" for more.
dsearch.Filter = "(cn=#####)"; 
SearchResultCollection rc = dsearch.FindAll();
X509Certificate stt = new X509Certificate();

foreach (SearchResult r in rc)
{
    if (r.Properties.Contains("userCertificate"))
    {
        // This is hard coded to the first element.
        // Some users may have multiples.  Use ADSI Edit to find out more.
        Byte[] b = (Byte[])r.Properties["userCertificate"][0];
        X509Certificate cert1 = new X509Certificate(b);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...