sslStream.AuthenticateAsClientAsync不接受客户端证书

时间:2018-11-06 09:39:54

标签: c# ssl sslstream

我正在尝试使用SslStream与服务器建立TLS连接。
当我不提供证书时,一切都按预期进行。

但是,当我尝试在同一台服务器上使用自签名客户端证书时,它不起作用。

  • 当我使用cer文件(没有私钥的证书)时,不会发送证书(证书tls数据包的证书长度为0)。

    < / li>
  • 当我尝试使用包含证书,私钥和ca证书的pfx文件时,收到错误消息

  

“无法识别提供给软件包的凭据”

我曾尝试在Windows上同时安装pfx和服务器证书,但是并没有帮助。

异常堆栈跟踪为:

  在

  System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult   lazyResult)
  在System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult   结果)
  位于System.Threading.Tasks.TaskFactory 1.FromAsyncCoreLogic(IAsyncResult iar, Func 2 endFunction,操作1 endAction, Task 1承诺,布尔值   requireSynchronization)

我尝试使用以下方法加载pfx

System.Security.Cryptography.X509Certificates.X509Certificate2(path, password);

System.Security.Cryptography.X509Certificates.X509Certificate2Collection collection = 
    new System.Security.Cryptography.X509Certificates.X509Certificate2Collection();

collection.Import(path, password, System.Security.Cryptography.X509Certificates.X509KeyStorageFlags.PersistKeySet);

两者都会导致相同的错误。
-CheckCertificateRevocation设置为false。
-启用的协议设置为Tls | Tls11 | Tls12
-将目标主机设置为远程服务器的dns名称。

我在做什么错?

0 个答案:

没有答案