Ejemplo n.º 1
0
        private static bool ConfirmServerCertificate(Session oS, string sExpectedCN, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
        {
            CertificateValidity certificateValidity = CertificateValidity.Default;

            FiddlerApplication.CheckOverrideCertificatePolicy(oS, sExpectedCN, certificate, chain, sslPolicyErrors, ref certificateValidity);
            if (certificateValidity == CertificateValidity.ForceInvalid)
            {
                return(false);
            }
            if (certificateValidity == CertificateValidity.ForceValid)
            {
                return(true);
            }
            if ((certificateValidity != CertificateValidity.ConfirmWithUser && (sslPolicyErrors == SslPolicyErrors.None || CONFIG.IgnoreServerCertErrors)) || oS.oFlags.ContainsKey("X-IgnoreCertErrors"))
            {
                return(true);
            }
            if ((sslPolicyErrors & SslPolicyErrors.RemoteCertificateNameMismatch) == SslPolicyErrors.RemoteCertificateNameMismatch && oS.oFlags.ContainsKey("X-IgnoreCertCNMismatch"))
            {
                sslPolicyErrors &= ~SslPolicyErrors.RemoteCertificateNameMismatch;
                if (sslPolicyErrors == SslPolicyErrors.None)
                {
                    return(true);
                }
            }
            return(false);
        }
Ejemplo n.º 2
0
        private static bool ConfirmServerCertificate(Session oS, string sExpectedCN, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
        {
            bool flag;

            if (FiddlerApplication.CheckOverrideCertificatePolicy(oS, sExpectedCN, certificate, chain, sslPolicyErrors, out flag))
            {
                return(flag);
            }
            if ((sslPolicyErrors == SslPolicyErrors.None) || CONFIG.IgnoreServerCertErrors)
            {
                return(true);
            }
            if ((slAcceptableBadCertificates != null) && slAcceptableBadCertificates.Contains(certificate.GetSerialNumberString()))
            {
                return(true);
            }
            if (CONFIG.QuietMode)
            {
                return(false);
            }
            frmAlert alert = new frmAlert("Ignore remote certificate error?", string.Format("Session #{5}: The remote server ({0}) presented a certificate that did not validate, due to {1}.\r\n\r\nSUBJECT: {2}\r\nISSUER: {3}\r\nEXPIRES: {4}\r\n\r\n(This warning can be disabled by clicking Tools | Fiddler Options.)", new object[] { sExpectedCN, sslPolicyErrors, certificate.Subject, certificate.Issuer, certificate.GetExpirationDateString(), oS.id }), "Ignore errors and proceed anyway?", MessageBoxButtons.YesNo, MessageBoxDefaultButton.Button2)
            {
                TopMost       = true,
                StartPosition = FormStartPosition.CenterScreen
            };
            DialogResult result = (DialogResult)FiddlerApplication._frmMain.Invoke(new getDecisionDelegate(FiddlerApplication._frmMain.GetDecision), new object[] { alert });

            if (DialogResult.Yes == result)
            {
                if (slAcceptableBadCertificates == null)
                {
                    slAcceptableBadCertificates = new StringCollection();
                }
                slAcceptableBadCertificates.Add(certificate.GetSerialNumberString());
            }
            return(DialogResult.Yes == result);
        }