Как использовать сертификат, вызванный из программы Windows Service, с учетной записью Network Service?

Я использую систему Trans Union New Access для запуска кредитных отчетов. Я делаю это на моей 64-битной машине для Windows 7.

У меня есть проект веб-приложения (веб-формы), который использует систему. В одной кнопке у меня есть следующий код:

            CreditReportRequestXML requestXMLSupplier = new CreditReportRequestXML();
            requestXMLSupplier.RunPendingRequests();

Этот код вызывает метод в другом проекте, который я сам кодировал. Код создает XML, который публикуется в Transunion. Я получаю совершенно хорошие ответы.

У меня есть другой проект, который является проектом службы Windows. Соответствующий код в этом проекте:

            CreditReportRequestXML requestXMLSupplier = new CreditReportRequestXML();
            requestXMLSupplier.RunPendingRequests();

Когда учетная запись, под которой работает служба, является моей учетной записью, это работает просто отлично. Служба устанавливается как служба и может быть запущена и остановлена ​​с помощью консоли служб.

Все идет нормально.

Вот плохой Когда я настраиваю службу для работы под учетной записью сетевой службы, я получаю следующую ошибку:

Не удалось создать безопасный канал SSL/TLS.

Я пытался использовать winhttpcertcfg, чтобы исправить проблему. Я пробовал -

winhttpcertcfg -g -c LOCAL_MACHINE \ My -s ******** -a "Сетевая служба"

(где ******** - имя субъекта сертификата. Я вижу это имя, когда отлаживаю свой сервис с помощью? clientCertificate.SubjectName.Name)

Я также пытался

winhttpcertcfg -i certfile.p12 -c LOCAL_MACHINE\My -a "Сетевая служба" -p pwforcert

(где certfile - это имя файла - обратите внимание, что у меня есть файл p12, а не файл PFX; pwforcert - это пароль, который я использовал для создания системного клиента на сайте Trans Union.)

Служба завершается с сообщением выше после попытки обеих команд. Когда я перечисляю учетные записи, которые должны иметь доступ к закрытому ключу, используя

winhttpcertcfg -l -c LOCAL_MACHINE\My -s MyCertificate

в выходных данных отображается правильный соответствующий сертификат, а также "Дополнительные учетные записи и группы с доступом к закрытому ключу включают в себя:" и указывается NT AUTHORITY\NETWORK SERVICE в качестве одной из учетных записей.

Причина, по которой я хочу использовать Network Service для запуска службы, заключается в том, что мой босс хочет, чтобы я это сделал. Я говорил с нашими сетевыми парнями сегодня, и у них нет учетной записи на наших серверах, которая имеет права администратора.

Что мне не хватает? Или есть ли другой способ обойти эту проблему?

1 ответ

Я завел экспорт одного из сертификатов в файл PFX, включая закрытый ключ и все связанные сертификаты. Это можно сделать только из одного или двух сертификатов на моей машине. Затем я удалил все сертификаты TU. Winhttpcertcfg -i имя_файла.pfx -c LOCAL_MACHINE\My -a "NETWORK SERVICE" -p **** было использовано. Это сработало.

Другие вопросы по тегам