有没有办法强迫web客户端在我的C#web服务器中使用安全SSL密码(TLS 1.1/TC4),以避免BEAST攻击

有没有办法强迫web客户端在我的C#web服务器中使用安全SSL密码(TLS 1.1/TC4),以避免BEAST攻击,c#,ssl,.net-4.5,beast,C#,Ssl,.net 4.5,Beast,我有一个用C语言编写的专业web应用程序——我的C代码充当web服务器,接受来自浏览器的连接,并将应用程序显示为网页 现有的应用程序使用SSL保护来自浏览器的连接,但我担心BEAST,这会使许多较旧的SSL密码不安全。因此,我希望确保我只接受使用TLS1.1或更高版本的连接和/或像RC4这样的安全密码 我已经接受,我将不得不放弃我正在使用的SSL库,并可能使用SslStream切换到.NET4.5 虽然我知道如何使用SslProtocol和cipheragorithm检查流的密码,但我找不到一种

我有一个用C语言编写的专业web应用程序——我的C代码充当web服务器,接受来自浏览器的连接,并将应用程序显示为网页

现有的应用程序使用SSL保护来自浏览器的连接,但我担心BEAST,这会使许多较旧的SSL密码不安全。因此,我希望确保我只接受使用TLS1.1或更高版本的连接和/或像RC4这样的安全密码

我已经接受,我将不得不放弃我正在使用的SSL库,并可能使用SslStream切换到.NET4.5

虽然我知道如何使用SslProtocol和cipheragorithm检查流的密码,但我找不到一种方法来强制连接选择一种更安全的算法。我错过什么了吗


为免生疑问,这与ASP无关-此服务器是用原始C#编写的。我需要一个使SslStream更喜欢特定密码的编程方法。我不太可能拥有更改主机服务器上ssl注册表设置所需的权限。

如果SslProtocol或CipherStrength不符合指定的条件,则可以引发异常,并使用TcpClient的close()方法强制关闭连接不要太担心BEAST。它只适用于混合受信任和不受信任的代码,即使使用CBC套件,最新的实现也不会受到攻击。但是SSL+.net不是一个很好的组合。MS的
SslStream
不允许对套件进行充分控制。Mono只支持较弱的套件[其他人不同意,也许你喜欢其中一个]。BouncyCastle很好,但仅限于客户端。OpenSSL网络(或者说,我在一年前尝试过)出现了一些错误,看起来不太自信。GnuTLS没有.net包装器,但是有一个很好的c API。担心BEAST的不是我,而是用户。我再多的保证也阻止不了他们的坚持!看起来我不得不拒绝不太安全的协议,只希望网络库会选择一个安全的协议(如果有的话)。