SslStream / Tcp クライアント経由でサーバーに接続しようとしています。毎回、次のような例外が発生します。AuthenticateAsClient 行でトランスポート ストリームから予期しない EOF または 0 バイトを受信しました。
トレース ログを有効にしましたが、ログに次の 2 つのエラーが記録されています。
System.Net 情報: 0: [12260] SecureChannel#66702757::.ctor(ホスト名 = xxx.xx.xx.xxx、#clientCertificates = 0、encryptionPolicy = RequireEncryption)
System.Net 情報: 0 : [12260] SecureChannel#66702757 - 選択できるクライアント証明書が 0 個残っています。
これを解決する方法について誰かアドバイスをいただけますか?理由はわかりませんが、違いがある場合は外側のキャッチに投げています。
try
{
TcpClient client = new TcpClient(_host, _port);
// _stream = client.GetStream();
_stream = new SslStream(client.GetStream(), false, ValidateServerCertificate, null);
_sslReader = new StreamReader(client.GetStream());
try
{
_stream.AuthenticateAsClient(_host);
}
catch (AuthenticationException e)
{
client.Close();
return;
}
HandleConnect();
}
catch (Exception e)
{
_logger.Error(e.BuildExceptionInfo());
}
public bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
if (sslPolicyErrors == SslPolicyErrors.None || sslPolicyErrors == SslPolicyErrors.RemoteCertificateNameMismatch)
return true;
return false;
}