sertifika deposundan sertifikaların listesini alın Güvenli bir uygulama için bir iletişim kutusunda bir sertifika seçmem gerekiyor. C# kullanarak sertifika deposuna veya bir parçasına (ör. storeLocation="Local Machine"
ve storeName="My"
) nasıl erişebilirim ve oradan tüm sertifikaların bir koleksiyonunu alabilir miyim? Yardımlarınız için şimdiden teşekkür ederiz.C#
C#
cevap
Evet - X509Store.Certificates
özelliği, X.509 sertifika deposunun bir anlık görüntüsünü döndürür.
X509Store store = new X509Store("My");
store.Open(OpenFlags.ReadOnly);
foreach (X509Certificate2 mCert in store.Certificates){
//TODO's
}
bu deneyin:
//using System.Security.Cryptography.X509Certificates;
public static X509Certificate2 selectCert(StoreName store, StoreLocation location, string windowTitle, string windowMsg)
{
X509Certificate2 certSelected = null;
X509Store x509Store = new X509Store(store, location);
x509Store.Open(OpenFlags.ReadOnly);
X509Certificate2Collection col = x509Store.Certificates;
X509Certificate2Collection sel = X509Certificate2UI.SelectFromCollection(col, windowTitle, windowMsg, X509SelectionFlag.SingleSelection);
if (sel.Count > 0)
{
X509Certificate2Enumerator en = sel.GetEnumerator();
en.MoveNext();
certSelected = en.Current;
}
x509Store.Close();
return certSelected;
}
Linq bunu daha kolay yapar: x509Store.Certificates.OfType
@JonathanDeMarks: "DC = mysite, DC = com" ifadesi tam olarak ne anlama geliyor? Bu örneklerden hiçbiri _specific_ sertifikasının nasıl alınacağını göstermiyor ... – Nyerguds
@Nyerguds Soru şu: Sertifika deposundan C# cinsinden sertifika listesini alın, belirli değil. Lütfen başka bir soru oluşturun. – Cobaia
o yapmanın en kolay yolu, istediğiniz sertifika mağaza açarak ve sonra X509Certificate2UI
kullanmaktır. X509Certificate2UI
on MSDN yılında
var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly);
var selectedCertificate = X509Certificate2UI.SelectFromCollection(
store.Certificates,
"Title",
"MSG",
X509SelectionFlag.SingleSelection);
daha fazla bilgi.
'X509Certificate2UI' kullanmak için' System.security.dll' öğesine bir başvuru eklemem gerekir, ancak bu, +1 ':)' bir çekicilik gibi çalışır. Ayrıca bir kullanıcı anahtar deposu kullanmak için 'StoreLocation.LocalMachine' yerine' StoreLocation.CurrentUser 'kullanın. – albciff
Yazım hatası sorunları olasılığını ortadan kaldırmak için numaralandırmalarını kullanmalısınız: StoreName ve StoreLocation. –