如何在.NET中为SSL连接指定密码?

时间:2010-05-28 20:07:38

标签: .net ssl tcp

如何指定要在SSL连接中使用的密码套件?

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

更具体一点我想使用NULL密码连接HTTPS服务,我会使用以下命令对OpenSSL做同样的事情:

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

我如何在.NET中执行此操作?

我们也欢迎商业或商业友好的许可图书馆建议。

3 个答案:

答案 0 :(得分:6)

(我之前的回答是不明智的,起初我没有注意到我所指的财产是只读的。)

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

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


这不是问题的一部分,但我认为(这对未来的读者来说真的是这样)你当然知道使用带有NULL密码的SSL的相关风险吗?而且,你错过了哪些好处?

答案 1 :(得分:0)

根据文档,您可以通过 palgSupportedAlgs dwMinimumCipherStrength dwMaximumCipherStrength 参数使用SChannel时设置密码SCHANNEL_CRED结构。

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

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

答案 2 :(得分:0)

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