У нас есть приложение для выдачи сертификатов (C #, ASP.NET, JavaScript), которое выдает сертификаты пользователям Windows XP с использованием XenRoll в IE.Мне нужно расширить это для поддержки пользователей Windows Vista и Windows 7, также использующих IE.
Для Vista и 7 Microsoft заменила элемент управления XenRoll ActiveX новым элементом управления CertEnroll.У меня это работает в Vista SP2, но в 7 я получаю эту ошибку на этапе установки:
CertEnroll :: CX509Enrollment :: InstallResponse: цепочка сертификатов обработана, но завершена в корневом сертификатекоторый не является доверенным поставщиком доверия.0x800b0109 (-2146762487)
Вот фрагмент соответствующего HTML и JavaScript:
<object id="classFactoryObj" classid="clsid:884e2049-217d-11da-b2a4-000e7bbb2b09"></object>
<script type="text/javascript">
function InstallCert()
{
try
{
var classFactory = document.getElementById("classFactoryObj");
var objEnroll = classFactory.CreateObject("X509Enrollment.CX509Enrollment");
var signedCert = '-----BEGIN CERTIFICATE-----' +
'REMOVED FOR BREVITY' +
'-----END CERTIFICATE-----';
objEnroll.Initialize(1); // User context
objEnroll.InstallResponse(4, signedCert, 6, ""); // AllowUntrustedRoot = 4
alert('Certificate installed');
}
catch (ex)
{
alert('Unable to install certificate: ' + ex.description);
}
}
InstallCert();
</script>
Теперь верно, что корневой сертификат не является доверенным, но я звонюInstallResponse с первым параметром, установленным на 4, который должен разрешить установку, даже если корневой сертификат не является доверенным.Это работает так, как объявлено в Vista, но, похоже, не работает в Windows 7.
Я тестировал, и работает, если корневой сертификат является доверенным.Я уверен, что кто-то скажет это, поэтому я упреждаю это - доверие клиентов корневому сертификату на самом деле не вариант для нас (мы хотим распространять сертификаты аутентификации клиентов среди клиентов, как часть их аутентификациив нашей сети).
Я что-то здесь не так делаю?Кто-нибудь еще получил это работает в Windows 7?