如何验证fiddler核心中的证书

本文关键字:核心 证书 fiddler 何验证 验证 | 更新日期: 2023-09-27 18:22:51

我想验证服务器颁发的证书是否有效,并提醒用户选择是否无法验证。目前看来,所有证书都被fiddler接受,而不会提醒用户。有什么机制可以做到这一点吗?可能在fiddlercore示例项目中的以下代码中。我想提醒用户使用不受信任根的自签名证书。

 static void CheckCert(object sender, ValidateServerCertificateEventArgs e)
    {
        if (null != e.ServerCertificate)
        {
            Console.WriteLine("Certificate for " + e.ExpectedCN + " was for site " + e.ServerCertificate.Subject + " and errors were " + e.CertificatePolicyErrors.ToString());

            if (e.ServerCertificate.Subject.Contains("fiddler2.com"))
            {
                Console.WriteLine("Got a certificate for fiddler2.com. We'll say this is also good for any other site, like https://fiddlertool.com.");
                e.ValidityState = CertificateValidity.ForceValid;
            }
        }
    }

如何验证fiddler核心中的证书

默认情况下,FiddlerCore将验证远程证书是否是可信链的一部分,除非您设置了Fiddler.CONFIG.IgnoreServerCertErrors = true;

然而,这意味着自签名证书将被FiddlerCore拒绝,并且由于FiddlerCore没有显示允许用户覆盖的UI,这是一个问题。

解决此问题的方法是使用实现证书验证事件处理程序:FiddlerApplication.OnValidateServerCertificate += new System.EventHandler<ValidateServerCertificateEventArgs>(CheckCert);

在处理程序中,您可以执行以下操作:

 private void CheckCert(object sender, ValidateServerCertificateEventArgs e)
 {
  if (SslPolicyErrors.None == e.CertificatePolicyErrors)
  {
     return;
  }
  DialogResult oResult = MessageBox.Show("Accept invalid certificate'nYOUR DETAILS HERE", "Certificate Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2));
 if (DialogResult.Yes == oResult) 
 {
   e.ValidityState = CertificateValidity.ForceValid;
 }
 else
 {  
   e.ValidityState = CertificateValidity.ForceInvalid;
 }

您通常还希望缓存用户的选择,以避免在每次连接时都提示他们。

请参阅http://fiddler2.com/blog/blog/2013/01/03/evaluating-certificates-in-fiddler-and-fiddlercore了解更多细节,包括完整的示例。