gpt4 book ai didi

C# 使用 "Forbidden"错误将 SSL 证书获取到 X509Certificate

转载 作者:太空宇宙 更新时间:2023-11-03 14:18:44 26 4
gpt4 key购买 nike

我在尝试获取一些 SSL 证书信息时遇到问题。

通常,代码工作正常,但在某些情况下,我会收到 403 Forbidden 错误。即使发生这种情况,我也想获取证书信息。在某些情况下,我也会收到无效的登录凭据。

不管这些问题中的任何一个,我都想获取 X509Certificate 对象。

如果我使用 IE 浏览它们,它会为我提供证书信息,而不管消息是什么。

因此对于示例代码,requestresponse都被定义为对象变量,并且在调用之前正确设置了request >getRequest().

如果没有 web 错误,这段代码工作正常,但如果有错误,变量 responsenull

是否有另一种方法可以将 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;
}

感谢您的帮助!

最佳答案

使用 SslStream类代替。使用constructor这需要 RemoteCertificateValidationCallback委托(delegate),在 AuthenticateAsClient 期间调用检查服务器的证书。

关于C# 使用 "Forbidden"错误将 SSL 证书获取到 X509Certificate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12657062/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com