如何在C#中创建支持PEAP身份验证的Radius服务器

时间:2014-01-14 11:17:58

标签: c# radius

我想创建一个支持PEAP的radius服务器(25型 - 带EAP-TLS的PEAP) 我有足够的信息,了解有关Radius数据包和PEAP数据包格式(RFC 2865半径)的所有信息 我项目中唯一困难的部分是EAP数据包中的TLS消息。 根据RFC 2246(TLS 1.0),我需要一些工具来帮助我创建PEAP协议的第1阶段。 在PEAP阶段1中,建立TLS信道(内部半径分组和内部EAP消息属性 - UDP)。阶段2中的其他数据通过该tls信道发送。 由于PEAP分两个阶段完成,第一阶段是我的主要问题 波纹管工具对我没有帮助:

1- System.Net.Security.SslStream类。 (这适用于TCP,而radius适用于UDP)。

2- secureBlackbox DTLS类。 (这是一个高级DLL,并且不允许我在TLS握手过程之前更改数据。编辑在需要任何TLS协议进程之前从客户端接收的数据,因为接收的数据是半径数据包。首先我有从中提取TLS消息。然后将其作为代理发送。但secureBlackBox类不允许我更改数据。)

3- FreeRadius项目(www.freeradius.org) 这个项目用C语言编写,很难将其转换为C#。

你能帮我在我的半径数据包中建立TLS频道吗? 提前感谢你的时间和考虑。

2 个答案:

答案 0 :(得分:0)

有一个.NET库,您可以免费下载,名为nRadius。虽然我没有使用它,但我只通过PInvoke使用了freeradius。

http://nradius.nw-network.com/web/?page_id=19 http://www.heise.de/download/nradius-1156905.html

答案 1 :(得分:0)

我正在使用C#开发radius服务器。我不认为使用dotnet的sslstream类会起作用。除非你开发一个BIO作为解释器并使用sslstream类,否则半径与eap下的peap工作。只是记录层数据被加密,必须进行所有握手和加密/解密。

我不确定dtls,但可能也不行,因为稍后您需要握手过程中的一些数据来计算mppe键等。

相关问题