我正在尝试使用SslStream
与服务器建立TLS
连接。
当我不提供证书时,一切都按预期进行。
但是,当我尝试在同一台服务器上使用自签名客户端证书时,它不起作用。
当我使用cer
文件(没有私钥的证书)时,不会发送证书(证书tls数据包的证书长度为0
)。
当我尝试使用包含证书,私钥和ca
证书的pfx文件时,收到错误消息
“无法识别提供给软件包的凭据”
我曾尝试在Windows上同时安装pfx
和服务器证书,但是并没有帮助。
异常堆栈跟踪为:
在System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult)
在System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult 结果)
位于System.Threading.Tasks.TaskFactory1.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名称。
我在做什么错?