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.

[参考译文] CC3235SF:EAP-TLS 证书和密钥的确切要求是什么?

Guru**** 1753810 points
Other Parts Discussed in Thread: CC3235SF, CCSTUDIO, UNIFLASH
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1383736/cc3235sf-what-are-the-exact-requirements-for-eap-tls-certificates-and-keys

器件型号:CC3235SF
Thread 中讨论的其他器件: CCSTUDIOUNIFLASH

工具与软件:

我们要将 CC3235SF 连接到 WPA-Enterprise EAP-TLS Wi-Fi。 我们已经设置了 FreeRadius 服务器、可以从不同的系统(例如从 Linux 机器)成功连接、因此我们相信 FreeRadius 设置是正确的。 但当我们尝试连接 CC3235SF 时、它会在收到带有服务器证书的 Server Hello 后发送"证书不良"警报。 在 CC3235SF 上、我们收到一个"SL_WLAN_EVENT_DISCONNECT"的 ReasonCode 为"SL_WLAN_DISCONNECTED"、此过程根本没有帮助。

那么、为什么出现"证书错误"警报、哪个证书有什么问题? 成功的 EAP-TLS 连接需要满足哪些证书和密钥的确切要求?

为了进一步调查、我附加了我们在 CC3235SF 上部署的三个证书/密钥文件以及 Wireshark 捕获的通信信息。

e2e.ti.com/.../2024_2D00_07_2D00_05_2D00_bad_2D00_certificate.pcapng.zipe2e.ti.com/.../1538.cert.zip

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

    您好!

    以下是一些重要事项:

    • 您是否在 FreeRADIUS 服务器上启用了 TLS 1.0? CC3235仅支持 TLS 1.0。 默认情况下、在 FreeRADIUS 服务器上禁用 TLS 1.0。 您需要 mods-enabled/eap 处设置选项 tls_min_version ="1.0"
    • 您使用的 CC32xx SDK 版本是什么? 您是否已在 sFlash 中上传了最新的 ServicePack?
    • 文件 client.de 中似乎有两个证书 请在此文件中仅使用一个证书。
    • 您是否已将 CA、证书和私钥上传至文件系统内的正确路径(/sys/cert/private.key/sys/cert/client.der/sys/cert/ca.der)?
    • 请确保在 CC32xx RTC 中设置了正确的时间、或禁用了 CA 文件验证(由适当的 SL_ API 设置)。

    1月

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    • TLS 1.0已启用、可以在 Wireshark 捕获中验证这一点
    • 根据 CCStudio 工程设置、CC32xx SDK 版本为"cc32xx_sdk_7_10_00_13"。 对于服务包、我们已在"image.syscfg"中启用了"Use ServicePack from SDK"选项。
    • 由于我们不知道应该是什么、因此我们已在" client.der""中添加了完整的证书链。 但我们也可以更改此设置。 我再次对其进行了测试、但测试失败也是如此。
    • CA 证书、客户端证书和客户端密钥位于项目中 userFiles 目录的正确路径中、因此应自动上传这些证书。
    • 时间设置正确。 如果设置不正确、将失败并显示"SL_WLAN_DISCONNECT_CERTIFICATE_EXPIRED"。

    在新文件测试中、我再次捕获了通信数据。 我上传捕获和文件。

    e2e.ti.com/.../userFiles_2D00_and_2D00_wireshark_2D00_capture.zip

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

    您好!

    • 根据提供的信息、我无法确定您的 RADIUS 服务器身份验证失败的原因。 我没有深入探讨您的证书,但根据快速查看证书看起来不错。 您拥有 RSA 2048、即使没有上传 ServicePack 也是可以的(SDK 3.30版本增加了对 EA RSA4096的支持)。 您是否在 FreeRADIUS 服务器日志中看到任何错误? 要消除其他可能的问题、您可以使用 EAP-PEAP0-MSCHAPv2进行测试吗? 要消除 CA 文件的潜在问题、可以通过以下方法使用禁用的 CA 进行测试:
      caDis = 0;
      retVal = sl_WlanSet(SL_WLAN_CFG_GENERAL_PARAM_ID, SL_WLAN_GENERAL_PARAM_DISABLE_ENT_SERVER_AUTH, 1, &caDis);
    • 您可以使用 Uniflash 软件验证 CA、证书和私钥是否正确上传至文件系统中。
    • 可使用 sl_ API 调用 sl_DeviceGet ()选项 SL_DEVICE_General -> SL_DEVICE_GENERAL_VERSION 来验证 ServicePack 版本

    1月

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

    我刚刚发现了最奇怪的事情:在 CCStudio 中更换 userFiles 并刷写电路板似乎并不能替代电路板上的文件。 相反、我需要删除 userFiles (证书/密钥)、刷写板、在文件系统中放入新的 userFiles 并再次刷写板。

    上传类似这样的正确文件后、连接过程会失败、并出现 FatalErrorEvent。 SlDeviceFatal_t ID 为1、即 SL_DEVICE_EVENT_FATAL_DEVICE_ABORT。  有什么想法吗? 如何进一步调查中止原因?

    不过、我想回应你的意见:

    • 目前、我们没有 PEAPv0-MSCHAPv2设置、因此如果可以进行测试、则必须对此进行研究。 从该测试中可以获得哪些见解?
    • 我们已经测试了启用和禁用的 CA 检查。 BTW、至少根据文档、Cadis 需要为1才能禁用服务器身份验证。
    • 在 Uniflash 中、我们无法再次下载证书/密钥、因为文件受保护并且 Uniflash 会请求令牌。 我们可以从哪里获得正确的令牌?

    检查 ServicePack 版本可得到:

    芯片823132185
    MAC 31.3.7.0.1.
    PHY 3.1.0.26
    NWP 4.13.0.2
    ROM 8738
    主机3.0.1.71

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

    您好!

    很难解释为什么您会看到 NWP 的致命中止。 有关更多详细信息、需要捕获 NWP 日志(请参阅SWRU455第20章)。 很遗憾、我没有用于解码 NWP 日志的工具。 您将需要等待 TI 方面的回答。

    • 通过使用 PEAPv0-MSCHAPv2进行测试、我想验证 EAP 身份验证是否能在您的情况下与 RADIUS 服务器正常工作。 我们将确保罪魁祸首是您的证书。
    • 否。Cadis 需要设置为0。 文档错误。 TI 在文档中了解该问题。 但不要问我为什么他们不更新文档。
    • 请使用供应商令牌创建安全文件(您可以选择自己的令牌)。 之后、您将能够使用 sl_ API 调用通过的 Uniflash 从您的代码操作此文件。
    • 您已在设备内上传了正确的服务包

    1月

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

    我们可以在哪里以及如何"使用供应商令牌创建安全的文件"?

    对于其他部分:我真的是来自这里的想法。 TI 会不会有任何支持? 我们看到器件正在中止、但我们不知道原因。

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

    您好!

    若要更深入地了解您看到 NWP 的原因、需要捕获 NWP 日志。 没有其他选择。 捕获到 NWP 日志后、您可以将二进制文件上传到该线程中。

    请使用 Uniflash 创建并上传您的证书文件。 您可以使用不安全的文件或具有供应商令牌的安全文件(选中 Secure、选中 Vendor 并添加令牌的数量)。

    1月

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

    尊敬的 Tobee:

    有关如何使用令牌创建文件的更多信息、请参阅网络处理器指南第8节。

    https://www.ti.com/lit/ug/swru455m/swru455m.pdf

    关于中止错误、您能否分享您如何设置设备和启动连接。 如果可能的话可以共享您的代码、或者对它进行伪代码。 另外、如果您可以发送 NWP 日志、我可以查看错误。 如果您需要获取日志设置方面的帮助、请告知我。

    此致!

    Rogelio

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    • CCStudio 在上传证书/密钥文件时、使用哪个(些)令牌?
    • 我们将从固件中删除特定于客户的部件并在之后共享。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我会发布 Connect_To_Wlan 函数的代码并上传 NWP 日志。 在主循环中、我们只运行 ProcessEvents 函数并输出一些事件/错误记录:

    空 Connect_To_Wlan (){ 
    char *ssid ="RADIUSTEST";
    char *键="";
    char *用户=" user@example.org;
    char * anon_user ="";

    int16_t 状态;

    SlDeviceVersion_t 版本;
    _u8 pConfigOpt;
    _U16 pConfigLen;
    pConfigLen = sizeof (ver);
    pConfigOpt = SL_DEVICE_GENERAL_VERSION;
    状态= sl_DeviceGet (sl_device_General、&pConfigOpt、&pConfigLen、(_u8 *)(&ver));
    if (status){
    TERM_WRITE ("sl_DeviceGet 失败、出现错误:%d\n\n\r"、状态);
    其他{
    TERM_WRITE ("sl_DeviceGet ok\n");
    TERM_WRITE ("芯片%d\nMAC 31.%d.%d.%d.%d.%d\nPHY %d.%d.%d.%d.%d.%d\nNWP %d.%d.%d.%d.%d.%d\nROM %d\nhost %d.%d.%d.%d.%d\n\n"、
    版本 ChipId、
    ver.FwVersion[0]、ver.FwVersion[1]、
    ver.FwVersion[2]、ver.FwVersion[3]、
    Ver.PhyVersion[0]、Ver.PhyVersion[1]、
    Ver.PhyVersion[2]、Ver.PhyVersion[3]、
    ver.NwpVersion[0]、ver.NwpVersion[1]、ver.NwpVersion[2]、ver.NwpVersion[3]、
    版本 RomVersion、
    SL_MAJORY_VERSION_NUM、SL_MINOR_VERSION_NUM、SL_VERSION_NUM、SL_SUB_VERSION_NUM);
    }

    _u8 param = 0;// 1表示禁用服务器身份验证
    STATUS = SL_WlanSet (SL_WLAN_CFG_GENERAL_PARAM_ID、SL_WLAN_GENERAL_PARAM_DISABLE_ENT_SERVER_AUTH、1、&PARAM);
    if (status){
    TERM_WRITE ("sl_WlanSet 失败、出错:%d\n\r"、status);
    其他{
    TERM_WRITE ("sl_WlanSet ok\n");
    }

    SlDateTime_t DateTime={0};
    DateTime.tm_day =(_u32) 11;
    DateTime.tm_mon =(_u32) 7;
    DateTime.tm_year =(_u32) 2024;
    DateTime.tm_hour =(_u32) 12;
    DateTime.tm_min =(_u32) 00;
    DateTime.tm_sec =(_u32) 00;
    状态= sl_DeviceSet (SL_DEVICE_General、SL_DEVICE_GENERAL_DATE_TIME、sizeof (SlDateTime_t)、(_u8*)(&DateTime));
    if (status)

    TERM_WRITE ("sl_DeviceSet 失败、出错:%d\n\n\r"、状态);
    其他{
    TERM_WRITE ("sl_DeviceSet ok\n");
    }

     //连接 WPA-Enterprise、请参阅 SimpleLink Wi-FiRegisteredCC3x20、CC3x3x 网络处理器(修订版 M)用户指南第76页
    SlWlanSecParams_t SecParams;
    SlWlanSecParamsExt_t SecExtParams;
    SecParams。 类型= SL_WLAN_SEC_TYPE_WPA_ENT;
    SecParams。 key = key;
    SecParams。 KeyLen = strlen (key);
    SecExtParams。 user = user;
    SecExtParams。 UserLen = strlen (user);
    SecExtParams。 AnonUser = anon_user;
    SecExtParams。 AnonUserLen = strlen (anon_user);
    SecExtParams。 EapMethod = SL_WLAN_ENT_EAP_METHOD_TLS;
    状态= sl_WlanConnect ((_i8*) SSID、strlen (SSID)、0、&SecParams、&SecExtParams);

    if (status){
    TERM_WRITE ("sl_WlanConnect 失败、出错:%d\n\r"、status);
    其他{
    TERM_WRITE ("sl_WlanConnect ok\n");
    }
    }

    e2e.ti.com/.../2024_2D00_07_2D00_11-14_2D00_44_2D00_17_2D00_cc3235sf_2D00_nwp_2D00_log.txt.zip
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢、请给我一些时间来浏览日志。

    此致!

    Rogelio

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

    您好!

    您是否找到一些时间来查看日志? 或者 我们什么时候可以在这里期待更新?

    此致

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

    尊敬的 Tobee:

    我上星期生病了,所以没有时间不幸。 我将在本周找到时间、请在本周稍后等待回复。

    此致!

    Rogelio

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

    尊敬的 RogelioD:

    您是否会很快找到时间来查看日志? 我们真的是来自想法。

    此致

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

    您好、截止日期:

    只是一个想法。 似乎您正在使用 PKCS#8。 你能用 PKCS#1测试吗?

    默认情况下、使用 OpenSSL 3.0 PKCS#8、可以使用 switch -transparent 将其切换到 PKCS#1

    1月

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

     我爱你,爱你。" 芯片连接成功、获得 IP 地址、可以 ping 通芯片!

    非常感谢您-您让我的一天如此美好!!  

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

    因此 NWP 在使用 PKCS#8时崩溃、我们需要使用 PKCS#1。 我们应该知道这一点吗? 此文档是否在任何地方提供

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

    尊敬的 Tobee:

    不要问我、为什么任何 TI 文档中都没有提到该限制。 与此类似的是、在任何地方都没有提及 EAP 安全的 TLS 1.0限制。 我放弃了提及 TI 文档中的错误、因为我看不到任何结果。

    直到昨天我才知道 PKCS#8可能存在的问题。 两年多来、我没有积极与 CC32xx 合作、过去我使用 PKCS#1测试了 EAP 安全。 但目前我在 NETX Duo 项目积极工作。 在 NETX 讨论了 Git 对 PKCS#1的限制。 由于 CC32xx 对 EAP 安全使用略微过时的 TLS 堆栈、因此我知道罪魁祸首是否相同。 我检查了你的私钥,发现是 PKCS#8。 因此,我在上面写了这样的评论。 你不应该责怪我,我不知道这一点。 我将根据 CC32xx 开发的经验进行回答。 在这个论坛上回答(2.9k 发布)只是我的良好意愿,我从来没有得到一分钱为这. 我不是 TI 员工、我无法访问任何内部 TI 换向。 我有权访问与您相同的公共文档。

    1月

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

    尊敬的 Jand:

    如果这听起来像是为任何事情责备你,我很抱歉。 这不是预期目标。

     没有正确记录这些事情显然不是你的责任。 恰恰相反,你是英雄,找到了这个月老问题的解决方案。

    非常感谢您的支持!

    此致