Windows HTTP服务器API HTTPS服务器
Windows Http Server API HTTPS Server
我想在C 中使用Windows Server API设置HTTPS服务器,我使用了示例代码,它可以与HTTP一起使用,但是我无法与HTTPS一起使用。
(我不希望客户端SSL我只有一个是https)
https://msdn.microsoft.com/en-us/library/windows/desktop/aa364640(v = vs.85).aspx
我尝试了" httpsetserviceconfiguration http_service_config_ssl_set"这是我的尝试:
PHTTP_SERVICE_CONFIG_SSL_SET p_ssl_settings = new HTTP_SERVICE_CONFIG_SSL_SET();
p_ssl_settings->KeyDesc.pIpPort = new SOCKADDR();
inet_pton(AF_INET, "0.0.0.0", p_ssl_settings->KeyDesc.pIpPort);
p_ssl_settings->ParamDesc.SslHashLength = 40;
p_ssl_settings->ParamDesc.pSslHash = "dec5a1a952967a613f27dec98ab78a248cd9f782";
p_ssl_settings->ParamDesc.AppId = {0x4dbfb575, 0xe1ef, 0x4239,{0x9a, 0x1d, 0xe9, 0x4c, 0xf8, 0x4d, 0xc2, 0x2d}};
p_ssl_settings->ParamDesc.pSslCertStoreName = nullptr;
p_ssl_settings->ParamDesc.DefaultCertCheckMode = 0;
p_ssl_settings->ParamDesc.DefaultRevocationFreshnessTime = 0;
p_ssl_settings->ParamDesc.DefaultRevocationUrlRetrievalTimeout = 0;
p_ssl_settings->ParamDesc.pDefaultSslCtlIdentifier = nullptr;
p_ssl_settings->ParamDesc.pDefaultSslCtlStoreName = nullptr;
p_ssl_settings->ParamDesc.DefaultFlags = HTTP_SERVICE_CONFIG_SSL_FLAG_NEGOTIATE_CLIENT_CERT;
const auto retcode = HttpSetServiceConfiguration(
hReqQueue,
HTTP_SERVICE_CONFIG_ID::HttpServiceConfigSSLCertInfo,
p_ssl_settings,
sizeof HTTP_SERVICE_CONFIG_SSL_SET,
nullptr
);
if (retcode != NO_ERROR) {
throw exception(string("HttpSetServiceConfiguration failed with " + to_string(retcode)).c_str());
}
但是,当我运行代码时,获取错误:87是不良参数错误,但对我而言,参数可以正常接缝。
在此网页上,提到句柄必须为零:(ServiceHandle [in]保留。必须为零。)
https://msdn.microsoft.com/en-us/library/windows/desktop/aa364503(v = vs.85).aspx
但是,当我传递nullptr或hander变量时,值为零,我会获得错误代码'6'(句柄无效),所以我不确定
我尝试了" netsh http add sslcert ipport = 0.0.0.0:50001 certhash = de ... appid {...}
,但我无法正确理解这一点,因为我会遇到错误1312:(我是我的appid不好,但我不知道如何为我的Visual Studio C .exe获取它)指定的登录会话不存在。它可能已经终止。
我尝试了" https://localhost:50001/"作为URL。
我该如何使用C " httpsetserviceconfiguration"或netsh?
好吧,我发现了我使用的httpinitialize(版本,flags,保留)函数的问题,我只给它'http_initialize_server',而我应该添加'http_initialize_config',所以这是主要问题,尽管很难仅从错误代码87中弄清楚。
原始:
HttpInitialize(HTTPAPI_VERSION_1, HTTP_INITIALIZE_SERVER, nullptr);
修复:
HttpInitialize(HTTPAPI_VERSION_1, HTTP_INITIALIZE_CONFIG | HTTP_INITIALIZE_SERVER, nullptr);
- "unknown ca"自生成的 CA、证书和客户端/服务器
- 当我编译webrtc服务器时,Windows上只支持clang-cl
- 如何通过套接字将文本文件的内容从服务器发送到客户端
- 有没有办法知道Tracer是否成功地完全连接到了jaegerclientcpp中的jaeger后端服务器
- 从服务器传输到客户端的消息不会出现
- 在我的HTTPS服务器中禁用DES
- Windows HTTP服务器API HTTPS服务器
- 使用 boost::asio 连接到 HTTPS 服务器
- 具有cpp-netlib的Https服务器
- 使用poco库构建HTTPS服务器时出错
- QSslSocket代理服务器(https)和证书.握手错误
- 函数cgi.FieldStorage冻结Python HTTPS服务器
- c++轻量级https服务器嵌入到应用程序中
- 使用libCurl和JsonCpp从https web服务器解析
- 用于c++的HTTP和HTTPS服务器库
- 简单的HTTPS服务器和保持连接
- POCO HTTPS请求验证服务器证书
- 如何用c++实现一个支持HTTPS的RESTful Web服务器
- HTTPS 客户端和服务器一起使用C++和 POCO 库(SSL 上下文问题)
- web服务- json-rpc服务器通过HTTPS使用c++