ediciones más recientes en negrita estoy usando la clase de .NET HttpListener
, pero estoy no ejecutar en IIS y no estoy usando ASP.net. Este web site describe qué código de uso real para implementar SSL con asp.net y this site describe cómo configurar los certificados (aunque no estoy seguro si solo funciona para IIS).¿Cómo agrego SSL para una aplicación .NET que utiliza httplistener - que * no * estar ejecutándose en IIS
La documentación de la clase describe varios tipos de autenticación (básica, resumen, Windows, etc.) --- ninguno de ellos hace referencia a SSL. Sí dice que si HTTPS is used, you will need to set a server certificate. ¿Va a ser una configuración de propiedad de una línea y HttpListener
se da cuenta del resto?
En resumen, necesito saber cómo configurar los certificados y cómo modificar el código para implementar SSL.
A pesar de que no se produce cuando estoy tratando de acceder a HTTPS, Me di cuenta de un error en mi registro de sistema - la fuente es "Schannel" y el contenido del mensaje es:
Se produjo un error fatal al intentar para acceder a la credencial del servidor SSL clave privada. El código de error devuelto del módulo criptográfico es 0x80090016.
Editar:
Las medidas adoptadas hasta ahora
- Creado un trabajo HttpListener en C# que funciona para las conexiones HTTP (por ejemplo, "http://localhost:8089/foldername/"
- creado un certificado mediante makecert.exe
- Agregó el certificado para ser confiable usando certmgr.exe
- Usó Httpcfg.exe para escuchar fo r conexiones SSL en un puerto de prueba (p. 8090)
- puerto Agregado 8080 a la HttpListener través listener.Prefixes.Add (https://localhost:8090/foldername/ ");
- probado una conexión HTTP del cliente, por ejemplo (http://localhost:8089/foldername/") en un navegador y recibir correcto retorno
- probado un cliente de HTTPS conexión, por ejemplo (http://localhost:8090/foldername/ ") en un navegador y recibe" Transferencia de datos interrumpida "(en Firefox)
- la depuración en Visual Studio muestra que la devolución de llamada del oyente que recibe las solicitudes nunca se activa cuando se inicia la conexión HTTPS - No veo ningún lugar que pudiera establecer un punto de interrupción para atrapar cualquier otra cosa antes.
- netstat muestra que los puertos de escucha están abiertas tanto para HTTPS y HTTP. puerto HTTPS no ir a TIME_WAIT después de que se intenta establecer una conexión.
- Fiddler y HTTPAnalyzer Don' Para captar algo del tráfico, supongo que no llega lo suficientemente lejos en el proceso para aparecer en las herramientas de análisis HTTP
Preguntas
- Cuál podría ser el problema?
- ¿Hay una pieza de código .NET que me falta (es decir, tengo que hacer más en C# además de simplemente agregar un prefijo al oyente que apunta a HTTPS, que es lo que he hecho)
- Have a missed un paso de configuración en alguna parte?
- ¿Qué más podría hacer para analizar el problema?
- ¿El mensaje de error en el registro del evento del sistema es una señal del problema? Si es así, ¿cómo se solucionaría?
He publicado este código como [paquete Nuget] (https://www.nuget.org/packages/SslCertBinding.Net/). Sientase libre de usarlo. –