Я пытаюсь использовать сертификаты программно, а не в магазине. Я создаю X509Certificate2
с именем файла и паролем.
Это прекрасно работает, когда я вручную добавил корневой сертификат в хранилище сертификатов в Trusted People. Однако я бы предпочел не делать этого при каждом развертывании - я бы предпочел также заниматься этим программно.
Когда я удаляю корневой сертификат из хранилища сертификатов, я получаю исключение.
Все, что я прочитал, похоже, говорит о том, что мне нужно вручную добавить корневой сертификат в хранилище сертификатов, иначе трастовая цепочка не будет работать.
Вопрос: существует ли программный способ настройки трастовой цепочки, поэтому мне не нужно делать это вручную?
Код выглядит так:
var serverCert = new X509Certificate2("FullPathToMyCertificate.cer", "Password");
Client.ClientCredentials.ServiceCertificate.DefaultCertificate = serverCert;
Исключение, возникающее при попытке использования Клиента:
System.IdentityModel.Tokens.SecurityTokenValidationException
The X.509 certificate CN=notrealcertname, OU=TPA, OU=BMP, OU=Projects, O=Somebody, C=US is not in the trusted people store.
The X.509 certificate CN=notrealcertname, OU=TPA, OU=BMP, OU=Projects, O=Somebody, C=US chain building failed.
The certificate that was used has a trust chain that cannot be verified.
Replace the certificate or change the certificateValidationMode.
A certificate chain could not be built to a trusted root authority.