一部の SSL 証明書情報を取得しようとすると問題が発生します。
通常、コードは問題なく動作しますが、場合によっては 403 Forbidden エラーが発生します。このような場合でも証明書情報を取得したい。また、無効なログオン資格情報を取得している場合もいくつかあります。
X509Certificate
これらの問題のいずれかに関係なく、オブジェクトを取得したいと考えています。
IE を使用してそれらを参照すると、メッセージに関係なく証明書情報が表示されます。
したがって、サンプル コードでは、request
との両方response
がオブジェクト変数として定義されており、 をrequest
呼び出す前に適切に設定されていますgetRequest()
。
このコードは、Web エラーがない場合は正常に機能しますが、エラーがある場合、変数response
はnull
.
これらのエラーが表示されてもX509Certificate
、 というオブジェクト変数にを取得する別の方法はありますか?cert
正直なところ、応答が機能するかどうかは気にしません。気にするのはX509Certificate
.
// callback used to validate the certificate in an SSL conversation
private static bool ValidateRemoteCertificate(
object sender,
X509Certificate certificate,
X509Chain chain,
SslPolicyErrors policyErrors
) {
// allow any old dodgy certificate...
log.write(0, "entering ValidateRemoeCertificate ");
return true;
}
// getRequest
private int getRequest()
{
try {
log.write(1, "Validating " + webHostName);
// request.Method = method;
ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(ValidateRemoteCertificate);
response = (HttpWebResponse)request.GetResponse();
response.Close();
} catch (Exception w) {
if (w.Message.Contains("401"))
{
log.write(4, "Web Site Authentication Required for " + host + ":" + port);
return 401;
}
else if (w.Message.Contains("403"))
{
log.write(4, "Forbidden Access for " + host + ":" + port);
return 403;
}
else
{
log.write(4, "Error Reading Web Site " + host + " Port " + port + " " + w.Message);
return 400;
}
}
return 0;
}
ご協力ありがとうございます。