您好!
我们提供的器件中、cc3220SF 在配置过程中托管安全的 HTTP 服务器、这样移动应用就可以连接到该服务器并交换信息。
Android 最近包括了 对 BoringSSL 的更新、该更新强制执行 "X509v3密钥使用"部分。
我们使用默认 AWS IoT CA 生成的证书 对我们的设备进行编程。密钥对是 RSA、证书的密钥使用部分仅包含 digitalSignature 位
在握手期间、cc3220服务器决定 使用密码套件 TLS_RSA_WITH_AES_256_CBC_SHAAndroid 移动应用程序失败、并显示 BoringSSL 错误: KEY_USAGE_BIT_INCORRECT。 发生这种情况是因为 keyEnchipherment使用 RSA 密钥交换时、现在必须设置位。
由于我们无法更新设备上的证书,因此我们尝试只强制 ECDHE_RSA方法是TLS_RSA_*从 Android 客户端 hello 消息中删除所有密码套件。 下面是 Android 的 TLS1.2默认密码套件,其中已注释掉了 TLS_RSA_*选项:
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
//TLS_RSA_WITH_AES_128_GCM_SHA256
//TLS_RSA_WITH_AES_256_GCM_SHA384
//TLS_RSA_WITH_AES_128_CBC_SHA
//TLS_RSA_WITH_AES_256_CBC_SHA
电话发送带有上述密码列表(减去 TLS_RSA_*)的 Client Hello 消息后,cc3220会立即关闭连接。 根据 https://www.ti.com/lit/an/swra509c/swra509c.pdf?ECDHE=1701965027847 的第2.2节、cc3220应该能够支持 ts 密码。
在使用启动 cc3220服务器之前、我们不会更改其默认协议或密码套件 sl_NetAppStart(SL_NETAPP_HTTP_SERVER_ID);
Question:
- CC3220上的安全 HTTP 服务器有哪些默认协议和密码套件?
- 如果 客户端 Hello 中的密码受支持、为什么 CC3220会 关闭连接? 取消注释 TLS_RSA_*选项后,会继续握手并选择
TLS_RSA_WITH_AES_256_CBC_SHA连接、但手机会自接入点起keyEnchipherment未在证书中设置位。 - cc3220现在是否强制执行"x509 Key Usage"(x509密钥使用)部分? 如果安装的证书中没有要使用的 TLS_RSA_*密码,则似乎没有该密码,因为它不应该选择要使用的 TLS_RSA_*密码。
keyEnchipherment已设置。 如果没有、TI 是否计划在未来实施该计划?
谢谢你。