2010-05-28 1 views
7

Comment puis-je spécifier une suite de chiffrement à utiliser dans une connexion SSL?Comment spécifier un chiffrement pour une connexion SSL dans .NET?

Je sais que Mentalis Seclib a obtenu cette fonctionnalité mais ils ne maintiennent pas le projet (et il y a des problèmes dans cette bibliothèque avec les systèmes d'exploitation x64) comme ils disent .NET Framework 2.0 a introduit ces fonctionnalités, mais je n'ai pas pu trouver faire cela dans .NET Framework 3.5.

Pour moi être plus précis veux connecter un service HTTPS en utilisant chiffrement NULL, je ferais la même chose avec OpenSSL en utilisant la commande suivante:

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

Comment puis-je faire cela dans .NET?

Les suggestions de bibliothèques sous licence commerciales ou commerciales sont également les bienvenues.

Répondre

6

(Ma réponse précédente a été mal informé, je ne l'ai pas remarqué d'abord que la propriété que je faisais allusion à lecture seule.)

Dans .NET 4, la classe System.Net.Security.SslStream prend en charge un nouveau constructeur, ce qui permet vous pour fournir une valeur EncryptionPolicy, qui pourrait être NoEncryption. Cela ne permet aucun chiffrement et demande qu'un chiffrement NULL soit utilisé si l'autre point de terminaison peut gérer un chiffrement NULL.

Malheureusement, cela n'existait même pas dans 3.5.


Pas vraiment partie de la question, mais je suppose (ce qui est vraiment pour les futurs lecteurs) que vous êtes au courant de cours des risques pertinents, d'utiliser SSL avec un algorithme de chiffrement NULL? Et, les avantages que vous manquez?

0

Sur la base de la documentation, vous pouvez définir les chiffrements lors de l'utilisation SChannel via les palgSupportedAlgs, dwMinimumCipherStrength et paramètres dwMaximumCipherStrength de la struct SCHANNEL_CRED. Pour activer l'algorithme de chiffrement NULL, vous devez définir dwMinimumCipherStrength sur -1. CAVEAT: Ceci est basé sur la documentation seulement. Je ne suis pas un développeur .NET, mais j'ai cherché une réponse à la question parce que je supporte un service qui a des clients .NET.

+0

Une idée de comment utiliser SCHANNEL dans .NET ou tout .NET wrapper pour cela? –

+0

Pour .NET 3.5, je ne le fais pas. .NET 4 a introduit une énumération EncryptionPolicy qui vous permet de configurer HttpWebRequest pour autoriser ou exiger l'utilisation de chiffrements NULL pour les connexions HTTPS. J'ai envoyé cette information à mon client .NET, et il a confirmé que cela fonctionne. Si cela vous est utile, je peux écrire comment l'utiliser. – Matthieu

+0

Cela semble intéressant pourriez-vous me signaler un article ou me jeter un extrait de code? –

0

Dans .NET, vous pouvez utiliser la classe SSLStream. dans .NET 4.0, comme Matthieu le dit plus haut, il vous permet de spécifier les chiffrements.