4

我创建了一个自签名证书(使用 OpenSSL 创建)并使用 Windows Vista Ultimate 上的证书MMC 管理单元 (CertMgr.msc)将其安装到证书存储中。

我已设法使用CertOpenSystemStore打开证书存储。然后我可以使用CertFindCertificateInStore找到证书

但是我不确定这个错误的真正含义,因为我无法在 MSDN 文档中找到答案。

  • 这是证书问题吗?
  • 还是操作系统问题(从某种意义上说,它应该是 Windows Server 操作系统才能工作)?

我在 Delphi 2010 中使用 Win32 API,但 C 示例很好。

4

1 回答 1

7

MSDN中的错误描述比较模糊:

安全包中没有可用的凭据。

Afaik 这个错误意味着 SSPI SChannel 包没有找到证书的私钥或者证书对 SSL/TLS 无效。确保证书/私钥已加载到 PROV_RSA_SCHANNEL 加密提供程序 (CSP) 中,而不是增强型 CSP 中。

您应该为(更多)更详细的错误信息启用 SChannel 日志记录,请参阅如何启用 Schannel 事件日志记录(KB 适用于 IIS,但所描述的方法在机器上全局启用了 Schannel 日志记录):

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL
EventLogging: DWORD = n

该值可以是以下组合:

  • 0: 不记录(Windows NT 4 默认)
  • 1:记录错误消息(Windows 2000 和 Windows XP 默认)
  • 2: 记录警告
  • 4: 记录信息和成功事件

自从我使用 SSL/TLS 以来已经有一段时间了,但如果我可以给出一个建议:谷歌搜索“John Banes”的帖子以及您遇到的错误,您可能会找到一些线索。

于 2009-11-13T05:39:05.650 回答