AcquireCredentialsHandle возвращает SEC_E_NO_CREDENTIALS - PullRequest
2 голосов
/ 13 ноября 2009

Мне удалось открыть хранилище сертификатов с помощью CertOpenSystemStore, и я могу найти свой самозаверяющий сертификат (созданный с помощью OpenSSL) с помощью CertFindCertificateInStore, который я установил через консоль MMC в Windows Vista Ultimate. Однако я не уверен, что на самом деле означает эта ошибка, так как я не смог найти ответ в документации MSDN. Это проблема с сертификатом? Или проблема с ОС, в том смысле, что это должно быть ОС Windows Server, чтобы это работало?

Я использую Win32 API в Delphi 2010, но примеры на C хороши.

Спасибо, Bruce

1 Ответ

5 голосов
/ 13 ноября 2009

Описание ошибки в MSDN довольно расплывчато:

Нет учетных данных доступны в пакет безопасности.

Эта ошибка означает, что пакет SSPI SChannel не нашел закрытый ключ для сертификата или сертификат недействителен для SSL / TLS. Убедитесь, что сертификат / закрытый ключ загружены в провайдера шифрования PROV_RSA_SCHANNEL (CSP), а не в расширенный CSP.

Вы должны включить ведение журнала SChannel для (более) более подробной информации об ошибках, см. Как включить ведение журнала событий Schannel (КБ для IIS, но описанный метод включил глобальное ведение журнала Schannel на машине). 1013 *

Прошло некоторое время с тех пор, как я работал с SSL / TLS, но если я могу дать один совет: Google для сообщений "Джон Бейнс" и ошибка, которую вы имеете, вы, вероятно, найдете некоторые подсказки.

...