C# SSLStream在服务器身份验证上设置受信任的证书颁发机构

C# SSLStream在服务器身份验证上设置受信任的证书颁发机构,c#,.net,ssl,C#,.net,Ssl,我正在尝试验证存在证书交换的客户端。我遇到的问题是openssl客户端拒绝连接尝试,因为身份验证握手中不包括证书颁发机构 对于运行在WindowsServer2008R2上的实例来说,这似乎很好,但在我的开发环境(Windows10和Windows7)中,它都失败了。我已经查看并尝试更改一些windows设置(主要是本地组策略),这些设置可能会禁止添加证书颁发机构,但无法使其正常工作 这是LocalCertificateSelectionCallback的字符串数组acceptableIssue

我正在尝试验证存在证书交换的客户端。我遇到的问题是openssl客户端拒绝连接尝试,因为身份验证握手中不包括证书颁发机构

对于运行在WindowsServer2008R2上的实例来说,这似乎很好,但在我的开发环境(Windows10和Windows7)中,它都失败了。我已经查看并尝试更改一些windows设置(主要是本地组策略),这些设置可能会禁止添加证书颁发机构,但无法使其正常工作

这是LocalCertificateSelectionCallback的字符串数组acceptableIssuers字段的函数吗

我还发现了另一个相关的,但不知道如何将其应用于sslstream类

我的代码如下所示

var _nwStream = new SslStream(client.GetStream(), true,
(sender, certificate, chain, sslPolicyErrors) =>
{
  bool policyErrs = (sslPolicyErrors & (SslPolicyErrors.RemoteCertificateChainErrors | SslPolicyErrors.RemoteCertificateNotAvailable)) != 0;
  if (policyErrs)
  {
    string message = string.Format("Remote Certificate failed for client: {0}, SSL policy errors {1}", client.Client.RemoteEndPoint, sslPolicyErrors);
    return !policyErrs;
},
(sender, targetHost, localCertificates, remoteCertificate, acceptableIssuers) =>
{
  acceptableIssuers = new string[] { _cert.Issuer };
  return _cert;
});

_nwStream.AuthenticateAsServer(_cert, true, System.Security.Authentication.SslProtocols.Tls, true);

任何帮助都将不胜感激-谢谢

我不知道为什么它没早点出现。在上有一个注册表项 HKEY\U LOCAL\U MACHINE\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL
调用设置为0的SendTrustedIssuerList,将其更改为1,解决了问题。在Windows Server实例上,此标志可能默认设置为1。

我不知道为什么它没有提前显示。在上有一个注册表项 HKEY\U LOCAL\U MACHINE\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL 调用设置为0的SendTrustedIssuerList,将其更改为1,解决了问题。在Windows Server实例上,此标志可能默认设置为1