2010-05-28 14 views
7

¿Cómo puedo especificar un conjunto de cifrado para utilizar en una conexión SSL?¿Cómo se especifica un cifrado para una conexión SSL en .NET?

sé que Mentalis Seclib tiene esta característica sin embargo, no mantienen el proyecto (y hay problemas en esa biblioteca con sistemas operativos de 64 bits) como dicen .NET Framework 2.0 introdujo esas características, sin embargo no pude encontrar una manera para hacer esto en .NET Framework 3.5.

Para ser más específicos Quiero conectar un servicio HTTPS mediante cifrado NULL, haría lo mismo con OpenSSL utilizando el siguiente comando:

openssl s_client -connect www.example.com:443 -cipher NULL 

¿Cómo se puede hacer esto en .NET?

También son bienvenidas las sugerencias de bibliotecas autorizadas comerciales o comerciales.

Respuesta

6

(Mi respuesta anterior fue mal informado, no me di cuenta al principio de que la propiedad que se refería era de sólo lectura.)

En .NET 4, la clase System.Net.Security.SslStream admite un nuevo constructor, lo que permite usted debe proporcionar un valor EncryptionPolicy, que podría ser NoEncryption. Esto no permite el cifrado y solicita que se utilice un cifrado NULL si el otro extremo puede manejar un cifrado NULL.

Desafortunadamente esto no existía ni siquiera en 3.5.


En realidad, no parte de la pregunta, pero supongo (y esto es realmente para los futuros lectores) que son, por supuesto, consciente de los riesgos relevantes, de utilizar SSL con un sistema de cifrado NULL? Y, ¿los beneficios que te pierdes?

0

Sobre la base de la documentación se pueden establecer los sistemas de cifrado cuando se utiliza SChannel a través de los palgSupportedAlgs, dwMinimumCipherStrength, y dwMaximumCipherStrength parámetros de la estructura SCHANNEL_CRED.

Para habilitar el algoritmo de cifrado NULO, debe establecer dwMinimumCipherStrength en -1.

CAVEAT: Esto se basa en la documentación solamente. No soy desarrollador de .NET, pero he estado buscando una respuesta a la pregunta porque apoyo un servicio que tiene clientes .NET.

+0

¿Alguna idea de cómo utilizar SCHANNEL en .NET o cualquier contenedor .NET para ello? –

+0

Para .NET 3.5, no lo hago. .NET 4 introdujo una enum de EncryptionPolicy que le permite configurar HttpWebRequest para permitir o requerir el uso de cifras NULL para conexiones HTTPS. Envié esa información a mi cliente de .NET y me ha confirmado que funciona. Si eso es útil para usted, puedo escribir cómo usarlo. – Matthieu

+0

Eso suena interesante ¿te importaría señalarme un artículo o arrojarme un fragmento de código? –

0

En .NET, puede utilizar la clase SSLStream. en .NET 4.0, como dice Matthieu más arriba, le permite especificar los cifrados.

Cuestiones relacionadas