ドメイン名に基づいてリモート サーバーの SSL 証明書情報を取得するための Web サービス (.NET 3.5) を作成しています。サービスを呼び出すためのコンソール アプリケーションであるクライアントがあります。現在、私には 11 個のドメイン名があります。1 つを除くすべてのサーバーの SSL 情報を取得できます。
私のコードは次のとおりです。
using (TcpClient client = new TcpClient())
{
client.Connect(strDNSEntry, 443);
SslStream ssl = new SslStream(client.GetStream(), false);
try
{
ssl.AuthenticateAsClient(strDNSEntry); //Error thrown here
}
catch (AuthenticationException e)
{
log.Debug(e.Message);
ssl.Close();
client.Close();
return cert;
}
catch (Exception e)
{
log.Debug(e.Message);
ssl.Close();
client.Close();
return cert;
}
cert = new X509Certificate2(ssl.RemoteCertificate);
ssl.Close();
client.Close();
return cert;
}
エラーは
"[System.IO.IOException] = {"リモート パーティがトランスポート ストリームを閉じたため、認証に失敗しました。"}".
SSLStream でのデバッグ中に調べたところ、「
この操作は、認証に成功したコンテキストを使用した場合にのみ許可されます。」
十分な資格情報がないため、エラーがスローされているか、サービスに問題がありますか? また、そのサーバーへのリモートデスクトップ接続を試みましたが、接続できません。