如何告诉 C# SslStream AuthenticateAsServer 发送证书信任列表 (CTL)
How to tell C# SslStream AuthenticateAsServer to send a Certificate Trust List (CTL)
我正在尝试使用 C# 构建我自己的安全(非 http)服务器。当然,我使用的是 SslStream 和 AuthenticateAsServer。这就像冠军一样工作,除了我无法弄清楚如何让服务器将证书信任列表 (CTL) 作为客户端证书请求的一部分发送到客户端。
我看到了 LocalCertificateSelectionCallback,但这似乎只适用于 AuthenticateAsClient,因为 AcceptedIssuers 列表被传递到回调中,而不是您能够以某种方式指定它。
我知道如何在 IIS 中设置 CTL,但在 C# 代码中没有。我正在使用原始套接字(使用 TLS 加密),所以我不能只使用 IIS 来托管此服务。
终于弄明白了:
在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL 下创建一个 DWORD 值
称为 "SendTrustedIssuerList" 并设置为“1”
我正在尝试使用 C# 构建我自己的安全(非 http)服务器。当然,我使用的是 SslStream 和 AuthenticateAsServer。这就像冠军一样工作,除了我无法弄清楚如何让服务器将证书信任列表 (CTL) 作为客户端证书请求的一部分发送到客户端。
我看到了 LocalCertificateSelectionCallback,但这似乎只适用于 AuthenticateAsClient,因为 AcceptedIssuers 列表被传递到回调中,而不是您能够以某种方式指定它。
我知道如何在 IIS 中设置 CTL,但在 C# 代码中没有。我正在使用原始套接字(使用 TLS 加密),所以我不能只使用 IIS 来托管此服务。
终于弄明白了:
在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL 下创建一个 DWORD 值 称为 "SendTrustedIssuerList" 并设置为“1”