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.

[参考译文] CC3235MODASF:CC3235SF HTTPS 服务器连接失败、HTTP 工作

Guru**** 2773145 points

Other Parts Discussed in Thread: CC3235SF

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1615777/cc3235modasf-cc3235sf-https-server-connection-fails-http-works

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

尊敬的 TI:

我尝试在 CC3235SF 上设置 HTTPS 服务器、但无法通过 HTTPS 连接。 详情如下:

环境和证书生成:

  • OpenSSL 版本: OpenSSL 3.6.1 27 Jan 2026

  • 用于生成密钥和证书的命令:

     

    openssl genrsa -out server-key.pem 2048

    openssl req -new -x509 ^
     -key server-key.pem ^
     -out server-cert.pem ^
     -天 365 ^
     -SHA256

    OpenSSL x509 -in server-cert.pem -out server-cert.der -outform der
    OpenSSL RSA -in server-key.pem -out server-key.der -outform der

  • 放入server-cert.derserver-key.der工程/userFile/certs/目录中。

代码中的 HTTPS 服务器设置:

unsigned char ServerCertificateFileName[] = "/certs/http_cert.der";
unsigned char ServerKeyFileName[] = "/certs/http_key.der";
unsigned char SecurityMode[] = {0x1};
unsigned char HttpsPort[] = {0xBB, 0x01}; // 443
unsigned char SecondaryPort[] = {0x50, 0x00}; // 80
unsigned char SecondaryPortEnable[] = {0x1};

// Set certificate and private key
sl_NetAppSet(SL_NETAPP_HTTP_SERVER_ID, SL_NETAPP_HTTP_DEVICE_CERTIFICATE_FILENAME, sizeof(ServerCertificateFileName), ServerCertificateFileName);
sl_NetAppSet(SL_NETAPP_HTTP_SERVER_ID, SL_NETAPP_HTTP_PRIVATE_KEY_FILENAME, sizeof(ServerKeyFileName), ServerKeyFileName);

// Enable HTTPS on primary port
sl_NetAppSet(SL_NETAPP_HTTP_SERVER_ID, SL_NETAPP_HTTP_PRIMARY_PORT_SECURITY_MODE, sizeof(SecurityMode), SecurityMode);
sl_NetAppSet(SL_NETAPP_HTTP_SERVER_ID, SL_NETAPP_HTTP_PRIMARY_PORT_NUMBER, sizeof(HttpsPort), HttpsPort);

// Enable secondary port for HTTP redirect
sl_NetAppSet(SL_NETAPP_HTTP_SERVER_ID, SL_NETAPP_HTTP_SECONDARY_PORT_NUMBER, sizeof(SecondaryPort), SecondaryPort);
sl_NetAppSet(SL_NETAPP_HTTP_SERVER_ID, SL_NETAPP_HTTP_SECONDARY_PORT_ENABLE, sizeof(SecondaryPortEnable), SecondaryPortEnable);

// Restart HTTP server
sl_NetAppStop(SL_NETAPP_HTTP_SERVER_ID);
sl_NetAppStart(SL_NETAPP_HTTP_SERVER_ID);

观察到的行为:

  • http://<IP>正常工作。

  • https://<IP>https://<IP>:443ERR_CONNECTION_REFUSED在浏览器中使用失败。

  • ALLsl_NetAppSetsl_NetAppStart调用 return0(成功)、无错误。

我已检查/尝试的内容:

  • DER 和 PEM 格式的证书。

  • 已使用 RSA 确认证书和私钥。

  • SecurityMode 设置为0x1(TLS 启用)。

  • 已启用用于重定向的辅助 HTTP 端口、但仍然无法连接。

  • 浏览器未安装自签名证书。

问题:

  1. 应在 Wi-Fi 连接之前或之后配置 HTTPS 服务器?

  2. 除了sl_NetAppSetsl_NetAppStart、是否还有其他必要的步骤(例如,证书格式,权限,文件路径)?

  3. PC 浏览器是否需要安装自签名证书才能连接?

  4. 是否有建议的方法来测试或验证 HTTPS 服务器是否正在实际运行(例如端口检查)?

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

    尊敬的 TI 支持团队:

    我想澄清一下在测试过程中观察到的当前 HTTPS 行为。

    当使用 SDK 提供的证书(例如 dummy-trusted-ca-cert 和 dummy-trusted-ca-cert-key)时、HTTPS 服务器会正常工作。 TLS 握手成功完成、并建立通信。 尽管浏览器显示 ERR_CERT_authority_invalid 、连接本身按预期工作。

    但是、当我使用 OpenSSL 生成自己的证书和私钥并将它们加载到器件中时、HTTPS 连接会始终导致超时。 浏览器根本无法建立 TLS 会话。

    这表明 HTTPS 服务器配置正确、因为它与 SDK 虚拟证书一起使用。 该问题似乎专门与自生成的证书和/或私钥的格式或属性有关。

    请告知:

    1. 证书格式 (PEM/DER、PKCS#1 与 PKCS#8) 是否有特定要求?

    2. NWP TLS 栈是否需要强制扩展或密钥使用字段?

    3. 在签名算法、密钥大小或编码方面是否存在已知限制?

    如果需要、我可以提供用于生成证书的 OpenSSL 命令、以供进一步分析。

    感谢您的支持。

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

    您好、

    感谢您验证它是否可以与虚拟证书配合使用。

    您能否提供创建证书所遵循的命令?

    此外、是否可以附加服务器证书本身? (这不是秘密,我不需要匹配的密钥)

    基本上、当浏览器连接到服务器时、它会获取证书链、然后验证该链、最终还会根据其内部根 CA 存储来验证根证书。 但是、即使它不在存储中(而且可能不是因为它没有由授权的根 CA 签名、就像虚拟 CA 不是这样)、如果您选择信任证书、它也应该允许您进行连接(然后,您会收到一个挂锁,上面有一个用于显示证书的标志)。

    因此、我假设在您的情况下、链无效或底部证书不是 CA 类型等

    此致、

    Shlomi

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

    尊敬的 TI 支持团队:

    感谢您对证书链验证过程的解释。

    以下是用于生成证书和密钥的 OpenSSL 命令:

    openssl genrsa -out server-key.pem 2048
    openssl req -new -x509 -key server-key.pem -out server-cert.pem -days 365 -sha256
    openssl x509 -in server-cert.pem -out server-cert.der -outform DER
    openssl rsa -in server-key.pem -out server-key.der -outform DER

    生成的证书是自签名的、不涉及单独的根 CA 或中间 CA。

    将此证书加载到器件时、HTTPS 连接会始终导致 TLS 握手期间超时。 但是、使用 SDK 虚拟证书时、HTTPS 工作正常(浏览器中有 ERR_CERT_Authority_INVALID)。

    根据您的解释、我怀疑该问题可能与以下问题之一有关:

    • 证书链结构(因为我使用的是自签名证书而不是 CA 签名链)

    • 缺少所需的 X.509 扩展(basicConstraints、KeyUsage、extendedKeyUsage 等)

    • 未正确标记底层证书 (CA/CA)

    • NWP 强制执行的特定 TLS 约束

    请您澄清一下:

    1. SimpleLink HTTPS 服务器是否需要 CA 签名的服务器证书?

    2. 是否需要配置完整的证书链?

    3. NWP TLS 栈是否需要强制的 X.509 扩展?

    4. 是否支持自签名证书?如果支持、它们必须满足哪些限制条件?

    我附上了生成的服务器证书(PEM 格式)以供您查看。

    -----BEGIN CERTIFICATE-----
    MIIDkzCCAnugAwIBAgIUXnpFiOcp/v7URdEiyV5snYQZ+PUwDQYJKoZIhvcNAQEL
    BQAwWTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM
    GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDESMBAGA1UEAwwJMTI3LjAuMC4xMB4X
    DTI2MDIxMTA4MjEzM1oXDTI3MDIxMTA4MjEzM1owWTELMAkGA1UEBhMCQVUxEzAR
    BgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5
    IEx0ZDESMBAGA1UEAwwJMTI3LjAuMC4xMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
    MIIBCgKCAQEAxcV5nZpi5Ea9vpd0XeWb0VvT6uzHaj84JjkZHrY/ZsWM6DQx6ECS
    O0FttWUNOlWmeO28w7NLf0TK5cGTWf7fHcnmcGEaT6Ty76lqA3LRNIjDG8qYwX5T
    etl4S+HOBI1tJRKTjVOLCan9uwAQ8KscbsyjShIEO/00VKFdsSKJXLLdCM1Gbmwj
    1pd7E745COPpOc1y7/9SvJlT3ym/Bo4+ZyhaLxuyUk0lsFkvJHPxl7gGj2oKiqWV
    QcA3slu4tjrCsf/oGOvwsBeS5kreDRNNGQWXR0gRj/rBXsYC41yYRH7j7tj1iyvb
    uyGVj+INep/lvdf7F0XNTJukjmSlDjyeRQIDAQABo1MwUTAdBgNVHQ4EFgQUF9VQ
    MkkyvFx5CqtxBCbFPHTdY5wwHwYDVR0jBBgwFoAUF9VQMkkyvFx5CqtxBCbFPHTd
    Y5wwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAHJnv4JFYdp9w
    dCVPF1UwTjlq4JITI5Fx0+bhtfdo0OrqYkfVJanQ4+MPbzAco2BGV68poroBv7E0
    CxP2U+DA+UF9GIxitgiulrSHZyTwyj5wnARut8l6eYY7gG3m3MqFQnSzp0GjZPfs
    s/UaoBmocuFlQxiXOVCxPtoaBZFSd5YgcXr+on2EJ59xTq+sGDI6kGD4C7ip9Qbf
    kqois65iBwUub92YBriJ9BFLrHEbkLpKdVFORMCvS2SDgz90Vebrq4UZsK7t7yLY
    Pd+oT3QO48qnE+T14OJMb9qBvY2oL/CkKzJBKGZy/58jwyj1yKS588KFLoEuHVRl
    g13HUAeWlA==
    -----END CERTIFICATE-----
    

    感谢您的帮助。

    此致、
    Ryan

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

    尊敬的 TI 支持团队:

    我执行了关于证书格式的附加测试。

    使用以下命令、我生成了自签名证书:

    openssl genrsa -out server.key 2048
    openssl req -new -x509 -key server.key -days 365 -SHA256 -out server.crt

    将 PEM 证书 (server.crt) 和相应密钥加载到器件时、HTTPS 工作正常。

    但是、将证书和密钥转换为 DER 格式后:

    OpenSSL x509 -in server.crt -out server.der -outform der
    OpenSSL RSA -in server.key -out server.key.der -outform der

    而是配置 DER 文件、HTTPS 连接会始终导致超时。

    这表明该问题与证书扩展或链验证无关、而是与 HTTP 服务器/NWP 如何解析 DER 格式的证书有关。

    您能否确认 SimpleLink HTTP 服务器是否完全支持 DER 格式的证书(适用于 SL_NETAPP_HTTP_device_certificate_filename 和 SL_NETAPP_HTTP_PRIVATE_KEY_FILENAME)、或者是否需要 PEM 格式?

    感谢您的帮助。

    此致、

    Ryan

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

    您好、

    我记得它可以同时得到 DER 和 PEM 但我最近没有检查它。

    查看用户指南、它确实仅提及 PEM、但如果不进行检查、我肯定无法保证。

    这是表格:

    Shlomi