C# 禁用单个请求的证书验证

C# 禁用单个请求的证书验证,c#,certificate,smtpclient,system.net,C#,Certificate,Smtpclient,System.net,在我的应用程序中,我需要向具有自签名证书的服务器发出请求。我想能够禁用证书验证只为该特定的请求 我知道我可以通过将ServicePointManager.ServerCertificateValidationCallback设置为指向回调方法并简单地返回true来禁用证书验证。但是,这会禁用整个应用程序的证书验证,我只需在app.config中设置即可 但是,我不想对整个应用程序禁用,而是对单个请求禁用。可能吗 我使用的类是SmtpClient,禁用证书验证通常是个坏主意。为什么不简单地在系统或

在我的应用程序中,我需要向具有自签名证书的服务器发出请求。我想能够禁用证书验证只为该特定的请求

我知道我可以通过将ServicePointManager.ServerCertificateValidationCallback设置为指向回调方法并简单地返回true来禁用证书验证。但是,这会禁用整个应用程序的证书验证,我只需在app.config中设置即可

但是,我不想对整个应用程序禁用,而是对单个请求禁用。可能吗


我使用的类是SmtpClient,禁用证书验证通常是个坏主意。为什么不简单地在系统或应用程序中添加自定义证书作为受信任证书呢

AFAIR这可以通过实施自己的方法来实现。 只要将自定义证书嵌入到应用程序中,并在X509CertificateValidator中进行比较(如果两者相等)


另请参见:

Robert thaks以获取回复。在应用程序的某些部分中,我们不希望允许证书无效。然而,在我们发送电子邮件的这种特殊情况下,我们希望使用SSL,但我们发现许多客户端具有自签名SSL证书,这导致发送电子邮件失败。不幸的是,SMTP服务器经常出现这种情况,为每台失败的SMTP服务器导入一个证书将是一场噩梦,因此我们希望允许SMTP能够接受证书失败,并且应用程序的其他部分仍然可以执行。那么,您可能应该使用Android“K9”中也使用的验证方案具有完全相同问题的邮件客户端。第一次遇到不受信任的证书时,它会显示一些证书详细信息,询问用户是否信任此证书。如果用户回答“是”,则会将证书哈希保存在设置文件中,将此证书标记为有效。然后,内部证书验证器接受所有常规证书以及带有保存哈希的证书。适用于所有人,并且仍然相对安全。不幸的是,这是一项服务,因此没有用户界面,因此没有任何用户可以单击以接受证书的对话框。