2010-05-28 52 views
7

如何指定密码套件以用于SSL连接?如何在.NET中为SSL连接指定密码?

我知道Mentalis Seclib得到了这个特性,但是他们没有维护这个项目(并且这个库有x64操作系统存在问题),因为他们说.NET Framework 2.0引入了这些特性,但是我找不到方法在.NET Framework 3.5中执行此操作。

更具体的我想用空密码连接的HTTPS服务,我会做与OpenSSL的同样的事情通过使用以下命令:

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

我怎样才能在.NET中做到这一点?

此外,商业或商业友好许可图书馆的建议也欢迎。

回答

6

(我以前的答案是不灵通,我并没有在第一,物业我指的是只读的注意。)

在.NET 4中,System.Net.Security.SslStream类支持一个新的构造,使您提供的值为EncryptionPolicy,可能为NoEncryption。这不允许加密,并且如果另一个端点可以处理NULL密码,则请求使用NULL密码。

不幸的是,即使在3.5中也不存在。


的问题没有真正的一部分,但我认为(这是真正为未来的读者),你当然知道的相关风险,使用SSL的空密码的?而且,你错过的好处?

0

根据相关文档,您通过palgSupportedAlgsdwMinimumCipherStrength和SCHANNEL_CRED结构的dwMaximumCipherStrength参数使用SChannel时可以设置密码。

为了启用NULL加密算法,您应该设置dwMinimumCipherStrength为-1。

CAVEAT:这仅基于文档。我不是一个.NET开发人员,但我一直在寻找这个问题的答案,因为我支持具有.NET客户端的服务。

+0

任何想法如何在.NET或任何.NET包装使用SCHANNEL它? – 2010-06-01 20:09:30

+0

对于.NET 3.5,我没有。 .NET 4引入了一个EncryptionPolicy枚举,该枚举允许您配置HttpWebRequest以允许或要求使用NULL密码进行HTTPS连接。我将这些信息发送给我的.NET客户端,并且他确认了它的工作原理。如果这对你有用,我可以写出如何使用它。 – Matthieu 2010-06-03 18:45:10

+0

这听起来很有趣,你会不会指向我一篇文章或抛出一段代码片段? – 2010-06-04 18:13:20

0

在.NET中,您可以使用SSLStream类。在.NET 4.0中,正如Matthieu上面所说,它允许您指定密码。