使用 WinInet 进行 SSL 请求


使用 WinInet API 可以建立安全套接字层 (SSL) 或专用通信技术 (PCT) HTTP 会话。安全 HTTP(表示为 HTTPS://)在 TCP 端口 443 上发生。可以使用类似于下面这样的代码来建立 HTTPS 会话:

  1. //...   
  2. hOpen = InternetOpen(...);  
  3. Connect = InternetConnect(  
  4.                           hOpen,                       // InternetOpen handle   
  5.                           "MyHttpServer",             // Server  name   
  6.                           INTERNET_DEFAULT_HTTPS_PORT,// Default HTTPS port - 443   
  7.                           "",                         // User name   
  8.                           "",                         //  User password   
  9.                           INTERNET_SERVICE_HTTP,      // Service   
  10.                           0,                          // Flags   
  11.                           0                           // Context   
  12.                          );  
  13. hReq = HttpOpenRequest(  
  14.                        hConnect,                          // InternetConnect handle   
  15.                        "GET",                      // Method   
  16.                        "",                         // Object name   
  17.                        HTTP_VERSION,               // Version   
  18.                        "",                         // Referrer   
  19.                        NULL,                       // Extra headers   
  20.                        INTERNET_FLAG_SECURE,       // Flags   
  21.                        0                           // Context   
  22.                       );  
  23. //...   



使用 HTTPS 而不是 HTTP 时,请注意两个差异:

* InternetConnect 使用 INTERNET_DEFAULT_HTTPS_PORT,而不是 INTERNET_INVALID_PORT_NUMBER 或 INTERNET_DEFAULT_HTTP_PORT

* 除了所有其他的选项外,HttpOpenRequest 还使用 INTERNET_FLAG_SECURE 选项。

在 HttpOpenRequest 中或在 InternetOpenUrl 中,可以使用以下两个选项以忽略无效的证书错误:

* INTERNET_FLAG_IGNORE_CERT_CN_INVALID:忽略因服务器的证书主机名与请求的主机名不匹配所导致的错误。

* INTERNET_FLAG_IGNORE_CERT_DATE_INVALID:忽略由已失效的服务器证书导致的错误。

有关这些标志的更多信息,请参阅 Internet Client SDK 文档。

SSL 和 PCT 功能是由 Schannel.dll 提供的,它在您运行再发布程序 Wintdist.exe 或 Wint351.exe 时会正确安装。有关再发布 Schannel.dll 的信息,请参阅 Redist.txt 或 Axredist.txt。

转自:http://blog.csdn.net/jijihome/article/details/6303570


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM