Wininet - 如何下载和验证 SSL 证书

Posted

技术标签:

【中文标题】Wininet - 如何下载和验证 SSL 证书【英文标题】:Wininet - How to download and verify SSL certificate 【发布时间】:2012-09-19 09:33:21 【问题描述】:

我想像 Internet Explorer 一样下载和验证证书,我尝试监视 IE API 调用以查看它是如何完成这一切的。 首先,我看不到哪个 wininet 函数正在下载 SSL 证书,其次有很多对 crypt32.dll 函数的调用。

谁能告诉我哪些函数请求证书或验证证书所需的证书数据。 我想了解方法并在我的应用程序中实现完全相同的行为。

【问题讨论】:

【参考方案1】:

谁能告诉我哪些函数需要证书

证书是 SSL 握手的一部分,不单独下载。

【讨论】:

那么它如何检查证书是否有效?【参考方案2】:

如果您使用 WinINet 打开 https 连接,它将为您下载并检查证书。所以不清楚你想做什么。

如果您想检查 WinINet 下载的证书,您可以在 IE8 或更高版本中使用INTERNET_OPTION_SERVER_CERT_CHAIN_CONTEXT。

如果您不想使用 WinINet,您可以使用 existing implementation 或 TLS,或者您可以自己实现它,但后者不是一个好主意。

【讨论】:

没有人确切知道使用哪些 Crypto API 来确认证书是否经过验证? 我不知道具体用的是哪个API,可能是CertVerifyCertificateChainPolicy。你为什么在乎?

以上是关于Wininet - 如何下载和验证 SSL 证书的主要内容,如果未能解决你的问题,请参考以下文章

Wininet SSL 与每个请求的客户端证书智能卡访问

OpenSSL WinINET 客户端

使用 WinInet 的客户端身份验证(证书 + 私钥)

求助delphi实现ssl验证客户端证书

ssl证书验证失败打不开网页

求助delphi实现ssl验证客户端证书