У меня есть приложение службы Windows .net 2.0, написанное на C #, которое обращается к веб-службе без мыла через SSL с помощью HttpWebRequest.Моя служба Windows работает под учетной записью NETWORK SERVICE.
Я могу заставить SSL работать, выдав сертификат веб-серверу, с которым моя служба Windows обращается к ЦС, затем установив сертификат ЦС на локальный компьютер.\ доверенное корневое хранилище.
Я хотел бы установить сертификат ЦС в хранилище доверенного корневого сертификата «учетная запись службы» вместо хранилища «на локальной машине» и иметь это «просто».work. "
Другими словами, кажется, что аутентификация SSL, используемая платформой .net, жестко запрограммирована для проверки текущего хранилища пользователей и хранилища локального компьютера на наличие доверенных корней при проверке сертификата SSL, ноесть ли какой-нибудь чистый способ заставить его проверить хранилище «служебной учетной записи» вместо (или в дополнение к) других хранилищ?
Единственное решение, которое я могу придумать, это переопределить ServicePointManager.ServerCertificateValidationCallback изатем P / Invoke для Crypto API, чтобы открыть хранилище сертификатов «service account» в Win32, и manдействительно искать корень там.Я бы предпочел не делать этого, так как это может показаться довольно большим снижением производительности, так как приходится ждать сбоя в 2-х хранилищах сертификатов, которые я не собираюсь использовать в любом случае.
Возможно, я принимаюздесь совершенно неправильный подход, но на самом деле мне кажется, что мне не хватает простого способа решения моей проблемы.