问题标签 [schannel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
28 浏览

smtp - 如何使用 NetSSL_Win 模块让 POCO SecureSMTPClientSession 类工作?

我已经构建了 Poco 1.11,但无法使用 NetSSL_Win 模块(即使用 Windows Schannel 而不是 OpenSSL)获得安全的 SMTP 连接或一般的 HTTPS 连接。分布中有一个样本NetSSL_Win\samples\Mail\src

当我运行它时,在 startTLS() 调用之后的第二个 login() 调用会引发此错误:

SSL 异常:无法解码数据:无法解密指定的数据

在这种情况下,服务器是 smtp.gmail.com,在端口 587 上。

对于我尝试运行的任何其他 HTTPS 客户端代码,我都会收到相同的错误消息。

有人使用 Windows Schannel 成功使用 Poco 1.11 进行 HTTPS 连接吗?

0 投票
0 回答
89 浏览

winapi - 使用 SChannel 的 DTLS:关闭例程的 InitializeSecurityContext 返回 SEC_E_INVALID_TOKEN

客户端使用 SChannel 处理 DTLS 连接,服务器使用 OpenSSL。在客户端尝试关闭连接之前一切正常(我使用了本指南)。

这是客户端关闭例程:

问题是 InitializeSecurityContext 返回 SEC_E_INVALID_TOKEN 并且不初始化输出缓冲区 - 所以我没有要发送到服务器的 close_notify 消息。

在这一点上,我不确定我是否做错了什么,或者我不能指望 SChannel 能够根据 OpenSSL 的关闭例程工作。任何帮助将不胜感激!

编辑

按照建议,我尝试使用不同的令牌类型 - SECBUFFER_TOKEN。因为我不使用 ISC_REQ_ALLOCATE_MEMORY 标志,所以我分配了一个缓冲区。我得到了 SEC_I_MESSAGE_FRAGMENT,所以我添加了一个循环。

现在它返回 SEC_I_MESSAGE_FRAGMENT 两次,第三次调用返回 SEC_E_INVALID_HANDLE。有任何想法吗?

0 投票
3 回答
289 浏览

c++ - 有没有人尝试使用带有 Windows-11 21h2 的 SChannel 使用 TLS 1.3?

我正在开发一个需要升级才能在 Windows-11 上使用 TLS 1.3 的 TLS 客户端。有没有人使用 SChannel API 成功实现了 TLS 1.3?

根据 Microsoft 下面的链接 TLS 1.3 在 win-11 和 server-2022 中受支持

https://docs.microsoft.com/en-us/windows/win32/secauthn/protocols-in-tls-ssl--schannel-ssp-

下面为 TLS1.3 添加了代码片段:

status = pMyFunTab->**AcquireCredentialsHandleA**(NULL, UNISP_NAME_A, SECPKG_CRED_OUTBOUND, NULL, &sChannelCred, NULL, NULL, phCred, &ts);

返回状态 = SEC_E_ALGORITHM_MISMATCH (0x80090331)

**error details: Secure connection failed. An error occurred while trying to connect to the host, error code 0x80090331. The client and server cannot communicate, because they do not possess a common algorithm.**

api链接:

https://docs.microsoft.com/en-us/windows/win32/api/sspi/nf-sspi-acquirecredentialshandlea https://github.com/MicrosoftDocs/win32/blob/docs/desktop-src/SecAuthN/acquirecredentialshandle --schannel.md


尝试了以下更改以修复相同的问题:

Windows 版本测试:windows 11 21h2 os build 22000.434

注册表更改:如下所示链接: 如何在 Windows 10 中启用 TLS 1.3

任何建议或 C++ 代码的小样本都非常感谢,以及任何可以帮助我了解客户问题的建议。

仅供参考:我没有使用 CURL LIB。

谢谢

问候:阿杰·贾斯瓦尔

0 投票
0 回答
26 浏览

ssl - Schannel:AcquireCredentialsHandle 失败:SEC_E_UNKNOWN_CREDENTIALS,从控制台应用程序访问证书时出现 SSL 连接错误

这是 tharun_atturu,我正在尝试通过从 .pfx 文件导入 ACM 证书来使用它们。当应用程序以系统权限运行时,我得到了预期的结果,但是当我以管理员权限尝试控制台应用程序时,我收到 SSL 连接错误。

使用 libcurl 从 cpp 控制台应用程序进行 api 调用。

错误:schannel:AcquireCredentialsHandle 失败:SEC_E_UNKNOWN_CREDENTIALS (0x8009030D) - 无法识别提供给包的凭据

关闭连接 0

schannel:关闭与 api*.com 端口 443 curl_easy_perform() 的 SSL/TLS 连接失败:SSL 连接错误

谢谢你。

0 投票
0 回答
23 浏览

c++ - 使用 tls1 的套接字连接。2 通过 schannel 协议

我在使用 tls1 建立安全连接时遇到问题。2 通过 C++ 中的 schannel 协议。

能够与服务器握手并能够以加密格式发送和接收数据。

但有时在使用 DecryptMessage 解密从服务器接收到的数据时,会收到错误消息:无法解密指定的数据。

有人可以帮忙吗?

0 投票
1 回答
22 浏览

c++ - SChannel 支持 TLS 1.3 吗?需要帮助编写 C/C++ 中的示例客户端/服务器程序以使用 SChannel 实现 TLS 1.3?

SChannel 支持 TLS 1.3 吗?需要帮助编写 C/C++ 中的示例客户端/服务器程序以使用 SChannel 实现 TLS 1.3?

我发现 SChannel.h 定义了 SP_PROT_TLS1_3_CLIENT 0x00002000 等。但是https://docs.microsoft.com/en-us/windows/win32/api/schannel/ns-schannel-schannel_cred#see-also grbitEnabledProtocols 没有提到 TLS1.3。

我无法找到任何其他互联网信息来证明 SChannel 支持 TLS1.3。