如何指定要在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中执行此操作?
我们也欢迎商业或商业友好的许可图书馆建议。
答案 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上面所说,它允许您指定密码。