This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/CC3120BOOST:连接到企业 WiFI

Guru**** 2393725 points
Other Parts Discussed in Thread: UNIFLASH, CC3120

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/886310/ccs-cc3120boost-connecting-to-enterprise-wifi

器件型号:CC3120BOOST
主题中讨论的其他器件:UNIFLASHCC3120

工具/软件:Code Composer Studio

您好!

我可以使用 SSID 和密钥成功将模块连接到常规 AP。

现在、我尝试连接到使用基数服务器的 AP、并已对其他设备进行了连接。  但是、与我们正在使用的其他器件和 PC 相比(并成功连接到 Radix Enterprise 身份验证)、此材料上没有什么明显的东西。

1.  swru455j 文档的第4.6.2节指明用户 SlWlanSecParamsExt_t->用户为用户, SlWlanSecParamsExt_t->AnonUser 为??  "匿名"?  这不是默认值吗?

2. 我们现有的 TLS 配置使用"匿名"连接、然后发送安全用户和密码。  密码应在何处设置、因为没有任何结构包含此类字段?

3. 文档 swru469f 第6.10节不清楚 CA 证书的存储位置。  没有任何解释"证书目录" 的内容(它是 LST 文件... ?)  它在第6.12节中提到了证书

4. 文档 swru455j 第4.6.2节说明密钥、客户端证书和 CA 必须以 PEM 格式存储。  然后说它们必须位于名为 sys/cert/xxx.de 的文件中   DER 文件与 PEM 文件不同。

5. 我是否使用 Uniflash、并按照第6.12节中的说明使用"用户文件"存储必要的文件?  还是存储在其他地方?

6. 当我尝试仅使用用户进行连接(因为这是唯一可设置的字段)时,有一次我收到210错误:"sl_WLAN_DISCONNING_CERTIFICATE_EXPIRED" 如何知道如果尚未连接到网络,日期是什么?  并且没有 RTC 设置时间?  我们的 CA 有效期为2020年1月至2021年1月。

7.  swru455j 第4.6.2节中的示例代码有"key" 、这是什么?  与用户密码相同?

这是代码、尽管我尝试了几次排列(用户、匿名、密钥、密码...)

memset (&security、0、sizeof (slWlanSecParams_t));
strcpy (key、radx_pWD);
security.Key =(signed char *) key;
security.KeyLen = strlen (key);
security.Type = sl_WLAN_SEC_TYPE_WPA_ENT;

memset (extsecurity、0、sizeof (slWlanSecParamsExt_t));
extsecurity.User =(signed char *) radx_user;
extsecurity.UserLen = sizeof (radx_user);
extsecurity.AnonUser =(signed char *) anonymous;
extsecurity.AnonUserLen = sizeof (匿名)-1;
extsecurity.EapMethod = sl_WLAN_ENT_EAP_METHOD_TTLS_TLS;
/*或 sl_WLAN_ENT_EAP_METHOD_PEAP0_MSCHAPv2 *
结果= sl_WlanConnect (ssid、sizeof (ssid)-1、NULL、安全、extsecurity); 

如需帮助清除此文档、我们将不胜感激。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    只需一个简短的评论。 获取字符串长度您应该使用 strlen()而不是 sizeof()。

    1月

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢、但行为没有变化。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    请阅读以下两个答案:

    1月

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Christopher、

    文档"swru469f" 一般介绍设置用户文件。 证书只是用户文件。

    设置 TLS 时、只要安全套接字选项(sl_SetSockOpt)引用正确的路径、就可以为证书文件提供任何名称(和路径)。   

    在企业案例中、名称硬编码如下:

    •根 CA–sys/cert/ca.der

    •客户端证书–sys/cert/client.der

    •私钥–sys/cert/private.key  

    因此、在 Uniflash 中、必须在/sys/cert 文件夹下创建证书文件("ca.der"、"client.der:、"private.key")。   

    为了使这更有趣-无论文件名如何、内容都应该是 PEM 格式(这是一个错误)。 通常、NWP 不会查看文件扩展名并从内部内容中检测证书类型。

    您可以使用命令 sl_DeviceSet 来设置 sl_DEVICE_General_DATE_TIME。


    DateTimeTimer_t DateTime={0}; DateTime_Day =(_u32) 23;//月中某天(DD 格式)范围1-31 DateTime.TM_mon =(_u32) 6;//月(mm 格式)范围为1-12 DateTime.TM_year =(_u32) 2014;//年(YYYY 格式) =(_u32小时);/h = 0~23小时 // 0到59 DateTimeTM_sec 范围内的分钟=(_u32) 22;// 0到59 sl_DeviceSet (sl_device_General、 sl_device_General_date_time、 sizeof (slDateTime_t)、 (_u8 *)(&DateTime)范围内的秒;

    可以从外部源(例如、在企业连接开始之前连接到设备的手机)、通过 SNTP (要求设备通过某些常规 AP 连接到互联网)或硬编码读取日期。

    BR、

    Kobi  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    不变。

    器件上电时默认日期为2013年1月1 日午夜。

    我执行了禁用服务器验证的命令。  没有区别。  但该文档指出、不加载 CA、只能取消单个手动连接的验证。

    我不认为它会变得如此遥远。  我们的服务器需要用户/密码。  文档中的任何内容都不会告诉我要输入密码的字段。

    深入挖掘...

    当我使用 EapMethod = SL_WLAN_ENT_EAP_METHOD_TTLS_TLS 时 、证书已过期...  如果主机 MCU 没有 RTC、器件应如何从冷启动获取时间和日期?

    当我使用 EapMethod = SL_WLAN_ENT_EAP_METHOD_TLS 时 、证书未过期、但从未连接。  我们的测试身份验证服务器仅使用 TLs...  但是、我们将无法控制 EapMethodos 客户可能使用的器件。

    具体而言、我们有一个小 AP、其中有一个基数服务器用于反向。  扫描结果为我提供:

    00 ->:DCC802TEST 通道:1 SecurityInfo:3208

    当然,该文档不会解释 什么是 SecurityInfo。  它只是告诉我无用的信息、即它是一个有符号的16位值。   在上面搜索、您只需执行以下操作即可:

    http://software-dl.ti.com/ecs/SIMPLELINK_CC3220_SDK/1_50_00_06/exports/docs/wifi_host_driver_api/html/group___wlan.html#struct_sl_wlan_network_entry__t

    那么、什么是3208、0xC88 (b 1100 1000 1000)?  这可能有助于确定该单元所需的设备、因为其他设备都不会出现任何问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您需要知道服务器使用的确切方法(例如,EAP TLS 将仅使用证书,而不是用户/密码)。

    您需要使用我提供的命令设置日期(您将从外部资源或其他连接获得时间、如前面所述)。

    securityInfo 文档确实缺少,您可以检查以下代码以解析信息:

    #define SL_WLAN_SCAN_RESULT_GROUK_Cipher (SecurityInfo)(SecurityInfo & 0xF)
    /*可能的值:none、sl_WLAN_cip_bitmap_TKIP、sl_WLAN_cip_bitmap_CCMP */
    
    #define SL_WLAN_SCAN_RESULT_ENCOUST_cip_bitmap (SecurityInfo)((SecurityInfo & 0xF0)>> 4)
    /*可能的值:none、sl_WLAN_cipul_bitmap_WEP40、SL_WLAN_cip_bitmap_WEP104、SL_WLAN_cip_bitmap_TKIP、SL_WLAN_cip_bitmap_CCMP*/
    
    #define SL_WLAN_SCAN_Result_HIDDEN_SSID (SecurityInfo)(SecurityInfo & 0x2000)>> 13
    /*可能的值:true/false */
    
    #define SL_WLAN_SCAN_RESULT_KEY_Mgmt_SUITES_BITMAP (SecurityInfo)(SecurityInfo & 0x1800)>> 11.
    /*可能值:sl_WLAN_KEY_Mgmt_suite_802_1_X、sl_WLAN_KEY_Mgmt_suit_PSK */
    
    #define SL_WLAN_SCAN_RESULT_SEC_TYPE_BITMAP (SecurityInfo)(SecurityInfo & 0x700)>> 8
    /*可能的值:sl_WLAN_SECURITY_TYPE_BITMAP_OPEN、SL_WLAN_SECURITY_TYPE_BITMAP_WEP、SL_WLAN_SECURITY_TYPE_BITMAP_WPA、
    SL_WLAN_SECURITY_TYPE_BITMAP_WPA2、0x6 (混合模式) SL_WLAN_SECURITY_TYPE_BITMAP_WPA | SL_WLAN_SECURITY_TYPE_BITMAP_WPA2 */
    
    3208 (0xc88)- 
    位0-3:组密码= 0x8 (CCMP) 
    位4-7:单播密码= 0x8 (CCMP) 
    位8-10:安全类型= 4 (WPA2) 
    位11-12:管理密钥套件= 1 (802.11X -企业) 
    位13:是否隐藏 SSID = 0 (不隐藏) 

    BR、
    Kobi
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的、这不起作用。  我每周只能访问基数服务器一次、如果幸运的话、可能会访问两次。  因此、这24-48小时的转弯也是非常令人烦恼的。

    我们之所以选择此器件、是因为它应该为企业身份验证提供支持。  这比必须投入精力编写我们自己的挑战/响应数据包和处理所有低级编码更好。

    除了此速率和坏文档之外、最好只查找另一个供应商。   

    我已经按照前面的说明、使用 Uniflash 应用程序和 CC3120 EMU 板安装了 CA、客户端证书和私钥。  我将模块日期设置为 CA 有效窗口期间的时间。

    除了这不起作用...

    [引用用户="Kobi Leibovit"]

    您需要知道服务器使用的确切方法(例如,EAP TLS 将仅使用证书,而不是用户/密码)。

    [/报价]

    我们现在使用的是、并且一直使用 EAP_TLS。。。  因此、这与我看到的行为相冲突。  当我将凭据字段留空时、 sl_WlanConnect 调用中出现错误-2061 "Username length error":

    slWlanSecParamsExt_t extsecurity;
    memset (&security、0、sizeof (slWlanSecParams_t));
    security.Type = sl_WLAN_SEC_TYPE_WPA_ENT;
    
    memset (extsecurity、0、sizeof (slWlanSecParamsExt_t));
    extsecurity.EapMethod = sl_WLAN_ENT_EAP_METHOD_TLS;
    结果= sl_WlanConnect (ssid、strlen (ssid)、NULL、安全、extsecurity); 

    因此、很明显、它需要用户名和密码。  某处...  进行一些操作。

    在测试其他几个客户端时使用已建立的用户名和密码、我们可以轻松地让这些客户端连接到 EAP 测试系统。  我们可以在服务器日志中看到、它最初发送了一个匿名用户、获取了证书、根据 CA 对证书进行了验证、以真实用户凭据发送、并被授予访问权限。

    类似的代码应如下所示:

    slWlanSecParamsExt_t extsecurity;
    memset (&security、0、sizeof (slWlanSecParams_t));
    security.Key =(signed char *)基数 PWD;
    security.KeyLen = strlen (radx_PWD);
    security.Type = sl_WLAN_SEC_TYPE_WPA_ENT;
    
    memset (extsecurity、0、sizeof (slWlanSecParamsExt_t));
    extsecurity.User =(signed char *) radx_user;
    extsecurity.UserLen = strlen (radx_user);
    extsecurity.AnonUser =(signed char *) anonymous;
    extsecurity.AnonUserLen = strlen (匿名);
    extsecurity.EapMethod = sl_WLAN_ENT_EAP_METHOD_TLS;
    结果= sl_WlanConnect (ssid、strlen (ssid)、NULL、安全、extsecurity); 

    但是、虽然在这种情况下 sl_WlanConnect 调用返回0、但该事件需要大约15分钟的时间才能触发。  它将触发 sl_WLAN_EVENT_DISCONNECT 和原因代码1 (sl_WLAN_DISCONNECT 未指定)。  信息无用的另一个案例。

    服务器日志报告模块从未响应。   具体而言、日志内容是:

    准备好处理请求。
    rad_recv:来自主机192.168.0.1端口46163的访问请求数据包、id=1、 length=75
    User-Name ="SCG"
    EAP-Message = 0x0201000a0173636f7474
    Service-Type = F框 用户
    F框 式 MTU = 1420
    NAS-IP-Address = 192.168.0.1
    Message-Authenticator = 0xecb9789cb459807a9ef20be60d0369e0
    #从文件执行部分授权从文件/etc/freeradius/sites-enabled/default
    
    
    +
    @[无后缀+]=[无用户+[授权]+[无][scott+[授权]+[授权]=[授权] 查找领域 NULL
    [后缀]没有这样的领域“NULL”
    +++[后缀]= NOOP
    [EAP] EAP 数据包类型响应 ID 1长度10
    [EAP]没有 EAP 启动,假定它是正在进行的 EAP 对话
    ++[EAP]=更新
    的[文件]用户: 匹配的条目在第191行++[
    文件]= OK
    +[Expire]= NOOP
    ++[logintime]= NOOP
    +}#组授权=已更新
    的已找到的身份验证类型= EAP
    #正在从文件/etc/freeradius/sites-enabled/default
    执行组身份验证{
    [EAP] EAP
    身份[EAP]处理类型 TLS
    [TLS]需要客户端证书
    [TLS]启动
    [TLS]开始返回 1
    ++[EAP]=已处理
    +}#组验证=已处理
    将 id 1的访问质询发送到192.168.0.1端口46163
    EAP-Message = 0x010200060d20
    消息验证器= 0x000000000000000000000000000000000000000000000000000000000000
    状态= 0x85e66bbe99be884c04aa1
    已完成请求1。
    
    进入下一个请求、在4.9秒内达到峰值。
    清洁请求1 ID 1,带有时间戳+1518
    警告:!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    警告:!! 状态为0x85e4664e85e66bbe 的 EAP 会话未完成!
    警告:!! 请阅读 wiki.freeradius.org/.../Certificate_Compatibility
    警告:!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    准备好处理请求。 

    因此、显然该模块没有响应第二个请求。

    顺便说一下、上述日志 snip 重复了两次。  尽管 对 sl_WlanConnect 的调用仅进行一次。

    有人愿意提供帮助吗?

    (顺便说一下、我们能够连接非 EAP、并且能够毫无问题地进行通信。  我们还将该模块置于旁路模式、正在读取原始以太网数据包并将其路由到 Sitara MCU 上的 NIMU 和 NDK 堆栈。  EAP 是此设备发生故障的唯一测试)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这一问题已经解决。

    转码密钥文件中出现错误(从 DER 转到 PEM -但仍命名 DER)。  使用的加密方式。

    如果模块中有内容告诉 MCU 钥匙无法打开、则会很有用。 或只是一般的"密钥或证书问题"。  您知道... 就像一个“事件”...?