c++ - 如何验证自签名证书?

标签 c++ ssl winhttp

我目前正在编写一个桌面应用程序,它需要通过 https(使用自签名证书)与远程服务器上的 PHP 脚本进行通信。服务器-客户端通信代码仍处于规划阶段,但是因为我还没有弄清楚如何验证(在客户端)我实际上正在与我的服务器通信。我假设有某种方法可以使用证书验证服务器身份。我打算使用 WinHTTP 进行 https 通信,前提是它具有我需要的所有功能。

最佳答案

为了大大简化事情:客户端通过使用受信任的证书颁发机构的硬编码列表来验证服务器的证书。证书颁发机构列表是嵌入到客户端的内部证书列表,客户端验证服务器提供的证书是否由客户端信任的证书颁发机构之一签名。

因此,无论您最终做什么,您的客户端都必须保留某种它信任的证书列表。这是 TLS 信任模型的一个基本方面。您可以简单地将您的自签名证书包含在客户端中,然后客户端会验证您的服务器是否提供了相同的证书。

但正确的答案是运行您自己的证书颁发机构。它涉及一些额外的预先准备工作,但最终结果会更好。与您的操作系统或浏览器中包含的几十个左右的标准证书颁发机构不同,您的客户端将在其信任列表中只有一个受信任的证书颁发机构:您自己的证书颁发机构,并且您的客户端将验证您的服务器证书由您的证书颁发机构签署。

关于c++ - 如何验证自签名证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31910218/

相关文章:

ruby-on-rails - 通过 gem 与 A​​pache 级别的 Rails SSL 重定向

sql-server - 从 exe 到 SQL 的安全连接

excel - 来自 www.eppraisal.com 的 VBA 网页抓取

VBA setRequestHeader "Authorization"失败

c++ - 使用 WinHttp 发布表单

c++ - 在 C++ 中使用 y = mx + b 公式移动圆

c++ - 在 OpenCV 中测试 parallel_for_ 性能

wordpress - 如何通过 https 更改主题图片?

c++ - 为什么fastcall比stdcall慢?

Python有模块,c++有什么?