Я получаю доступ к смарт-карте из c # через хранилище сертификатов Windows. Это хорошо работает на многих системах. Однако в одной системе это не так. Сертификат смарт-карты не добавляется в личные сертификаты.
Нам нужно, чтобы он был в хранилище сертификатов, чтобы получить к нему доступ из C #, например:
X509Store store = new X509Store(StoreName.My,
StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly);
X509Certificate2Collection certs =
store.Certificates.Find(X509FindType.FindByIssuerName,
issuerName, false);
Детали системы:
- ОС: Windows Server 2003 R2 x64 SP2
-
Используется CSP SafeSign Identity Client v3.0.11 .
- Доступ к системе осуществляется через соединение Citrix ICA, Citrix Presentation Server 4.5.
Что работает:
- Доступ к карте с помощью диагностического инструмента, предоставляемого устройством чтения смарт-карт ( OMNIKEY 3121 )
- Просмотр личных сертификатов в Internet Explorer 7 (Сервис> Свойства обозревателя> Содержимое> Сертификаты
- В основном все остальное, что мы пробовали с картой, кроме ...
Что не работает:
- Личные сертификаты не копируются в хранилище личных сертификатов (что можно проверить с помощью certmgr.msc)
Я предполагаю, что пересылка смарт-карты через Citrix работает нормально, потому что мы можем получить к ней доступ практически всеми способами, но CSP не выполняет свою работу правильно. Однако получить поддержку CSP непросто, поэтому возникает вопрос. И что я нахожу странным, так это то, что сертификат доступен через IE7, который показывает, что они доступны в каком-то магазине Windows.
Любые идеи о том, где искать дальше, приветствуются. Есть ли другой способ доступа к сертификатам смарт-карт, как в IE?