2010-09-21 8 views
6

Es posible utilizar una CA raíz personalizada para que FiddlerCore intercepte el tráfico HTTPS.Uso de la raíz personalizada con FiddlerCore

Lo que necesito es asignar un certificado que se utilizará para firmar todos los certificados de host.

Otra solución puede ser el suministro de información de certificados a FiddlerCore antes de crear el certificado raíz.

Respuesta

1

FiddlerCore no ofrece actualmente la posibilidad de personalizar la información contenida en su raíz con firma automática. Generará todos los certificados de entidad final encadenados a la raíz denominada DO_NOT_TRUST_FiddlerRoot.

¿Puede explicar por qué busca esta capacidad?

+0

Estamos utilizando FiddlerCore para proporcionar soporte de proxy en una herramienta comercial. Cuando el usuario inicia la función de proxy, FiddlerCore intenta instalar el certificado raíz generado por Fiddler y se muestra el texto de FiddlerRoot. El objetivo es personalizar este texto. – dereli

+0

Para instalar realmente la raíz, puede hacerlo usted mismo sin llamar al método FiddlerCore que hace eso. Sin embargo, tenga en cuenta que el texto del mensaje es de Windows, no de Fiddler. X509Store certStore = new X509Store (StoreName.Root, StoreLocation.CurrentUser); certStore.Open (OpenFlags.ReadWrite); try {certStore.Add (oRootCert); // Puede fallar debido a que el usuario rechaza la solicitud de seguridad de Windows } finally {\t certStore.Close(); } Existen otras formas de instalar la raíz, pero requieren que su aplicación se ejecute como administrador. – EricLaw

+0

Está bien instalar un certificado raíz pero el problema es que FiddlerCore no usará ese certificado para firmar certificados generados automáticamente por sitio. – dereli

1
FiddlerApplication.Startup(9999, FiddlerCoreStartupFlags.DecryptSSL); 
var path = Path.GetDirectoryName(Assembly.GetCallingAssembly().Location) + @"\sslcertificate.pfx"; 
var secureEndpoint = FiddlerApplication.CreateProxyEndpoint(443, true, new X509Certificate2(path, "password")); 

usted puede crear su propio certificado el uso de herramientas de Visual Studio, sin embargo, he utilizado este programa gratuito para crear una prueba de una causa soy perezoso: http://www.xenossoftware.com/freetools/certificategenerator/

Si el certificado está instalado en la máquina, Creo que también puedes hacer lo mismo con la clase X509Store.

Aquí hay un código para hacer esto (no probado):

FiddlerApplication.Startup(9999, FiddlerCoreStartupFlags.DecryptSSL); 
var store = new X509Store(StoreName.Root, StoreLocation.LocalMachine); 
try 
{ 

    store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly); 

    var x509Certificate2 = store.Certificates.Find(X509FindType.FindBySubjectName, "YourSSLCertificateName", true)[0]; 

    secureEndpoint = FiddlerApplication.CreateProxyEndpoint(443, true, x509Certificate2); 

} 
finally 
{ 
    store.Close(); 
} 
-1

Puede utilizar la propiedad oDefaultClientCertificate de FiddlerApplication para especificar certificado existente. Usé esto en mi aplicación de servicio de ventana usando FiddlerCoreAPI para capturar tráfico HTTPS.

var path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase); 
path = path.Replace("file:\\", ""); 
if (!path.EndsWith(@"\")) path += @"\"; 
path += "FiddlerRoot.cer"; 

FiddlerApplication.AfterSessionComplete += FiddlerApplication_AfterSessionComplete; 
FiddlerApplication.oDefaultClientCertificate = new X509Certificate(path); 
FiddlerApplication.Startup(8888, FiddlerCoreStartupFlags.DecryptSSL); 
+0

'oDefaultClientCertificate' se refiere a qué certificado de cliente se utiliza; la pregunta es sobre el certificado raíz usado para * server * certificate generation. – EricLaw

Cuestiones relacionadas