WinHTTP中的SSL

WinHTTP中的SSL

Microsoft Windows HTTP服务(WinHTTP)支持安全套接字层(SSL)事务,包括客户端证书。 本主题说明SSL事务中涉及的概念以及如何使用WinHTTP处理它们。

0x01.安全链路层

SSL是确保安全HTTP事务的成熟标准。 SSL提供了一种机制,可对客户端和服务器之间的所有事务执行高达128位的加密。它使客户端能够通过使用服务器证书来验证服务器是否属于可信实体。它还使服务器能够使用客户端证书确认客户端的身份。
这些问题中的每一个(加密,服务器身份和客户端身份)都是在客户端首次从安全超文本传输​​协议(HTTPS)服务器请求资源时发生的SSL握手中协商的。基本上,客户端和服务器各自呈现所需和首选设置的列表。如果可以商定并满足一组公共要求,则建立SSL连接。
WinHTTP提供了使用SSL的高级接口。虽然SSL握手和事务的详细信息在内部处理,WinHTTP使您能够检索加密级别,指定安全协议,并与服务器和客户端证书交互。以下部分提供有关创建基于WinHTTP的应用程序的详细信息,这些应用程序选择SSL协议版本,检查服务器证书并选择要发送到HTTPS服务器的客户端证书。

0x02.服务器证书

服务器证书从服务器发送到客户端,以便客户端可以获得服务器的公钥,并确保服务器已经由证书颁发机构验证。证书可以包含不同类型的数据。例如,X.509证书包括证书的格式,证书的序列号,用于签署证书的算法,颁发证书的证书颁发机构(CA)的名称,证书的名称和公钥请求证书的实体,以及CA的签名。
当使用WinHTTP应用程序编程接口(API)时,您可以通过调用WinHttpQueryOption并指定WINHTTP_OPTION_SECURITY_CERTIFICATE_STRUCT标志来检索服务器证书。服务器证书以WINHTTP_CERTIFICATE_INFO结构返回。如果您希望检索证书上下文,请改为指定WINHTTP_OPTION_SERVER_CERT_CONTEXT标志。
如果服务器证书包含错误,则可以在状态回调函数中获取有关错误的详细信息。 WINHTTP_CALLBACK_STATUS_SECURE_FAILURE通知指示服务器证书错误。 lpvStatusInformation参数包含一个或多个详细错误标志。有关详细信息,请参阅WINHTTP_STATUS_CALLBACK

0x03.客户端证书

SSL握手期间,服务器可能需要身份验证。通过向服务器提供有效的客户端证书来认证客户端。 WinHTTP使您能够从本地证书库中选择和发送证书。以下部分描述了在使用WinHTTP APIWinHttpRequest对象时提供客户端证书的过程。

0x04.WinHTTP API

WinHttpSendRequestWinHttpReceiveResponse都可能无法指示请求不成功,因为HTTPS服务器需要身份验证。在这些情况下,调用GetLastError以返回ERROR_WINHTTP_CLIENT_AUTH_CERT_NEEDED。收到此错误时,请使

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值