Other Parts Discussed in Thread: UNIFLASH, CC3200
主题中讨论的其他器件:UNIFLASH、
您好!
我已使用 uniflash 将根 CA 上传到 C3200。
我已经尝试使用 DER、cer、CRT 和 pem 文件、但它始终抛出-102错误
我有什么问题了。
您能否共享任何示例代码或设置 HTTPS 的分步配置指南。
Sundar
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.
很难从-102错误代码中判断问题到底是什么。
如果您可以在调用"ret = connect (...)"后在 HTTPCLI_CONNECT()(在 WebClient/httpcli.c 中)中添加打印内容或设置断点、则返回值("ret")应提供更多信息。
如果 ca 正确,并且在 应用程序中调用 HTTPCLI_setSecureParams()时在 secParams 中设置了文件(“/cert/129.cer”)的正确路径,则 DER 格式应该起作用。
BR、
Kobi
你(们)好
您能否共享任何示例代码或设置 HTTPS 的分步配置指南。
我们正在努力实施 HTTPS
您问:
“如果您可以在调用“ret = connect(...)”后在 HTTPCLI_CONNECT()(在 WebClient/httpcli.c 中)中添加打印内容或设置断点,则返回值(“ret”)应该更有用
我找不到“ret = connect(...)” 在“In WebClient/httpcli.c)”中!?? 您能更具体吗?
。
如果 ca 正确,并且在 应用程序中调用 HTTPCLI_setSecureParams()时在 secParams 中设置了文件(“/cert/129.cer”)的正确路径,则 DER 格式应该起作用。”
证书文件扩展名应该是.der 还是.cer ? 或者、证书格式是否应该具有 extension.der、且路径是否具有扩展名.cer?
请提供更多详细信息和具体信息
我不理解您对设置的疑问,您是否会更清楚、更详细?
以下是我的代码:
#define SL_SSL_CA_CERT"/cert/129.cer
静态 int ConnectToHTTPServer (HTTPCL_Handle https 客户端)
{
long lRetVal =-1;
struct sockaddr_in addr;
slDateTime_t dt;
struct HTTPCLI_SecureParams sparams;
/*设置当前日期以验证证书*/
DT.SL_TM_DAY = 12;
DT.SL_TM_mon = 2;
DT.SL_TM_year = 2021;
DT.SL_TM_Hour = 9;
DT.SL_TM_MIN = 0;
DT.SL_TM_sec = 0;
SL_DevSet (SL_DEVICE_General_CONFIGURATION、
SL_DEVICE_General_configuration_date_time、
sizeof (slDateTim_t)、(unsigned char *)(&dt));
/*安全参数*/
sparams.method.secureMethod = SL_SO_SEC_METHOD_TLSv1_2;
sparams.mask.secureMask = SL_SEC_MASK_TLS_RSA_ITH_AES_256_CBC_SHA;
strncpy (sparams.cafile、sl_SSL_CA_CERT、sizeof (sl_SSL_CA_CERT));
sparams.privkey[0]= 0;
sparams.cert[0]= 0;
sparams.dhkey[0]= 0;
HTTPCLI_setSecureParams (&sparams);
#ifdef use_proxy
struct sockaddr_in paddr;
paddr.sin 系列= AF_iNet;
paddr.sin 端口= htons (proxy_port);
paddr.sin_addr.s_addr = sl_Htonl (proxy_IP);
HTTPCLI_setProxy (struct sockaddr *) paddr);
#endif
/*解析主机名/IP */
lRetVal = sl_NetAppDnsGetHostByName ((signed char *) host_name、
strlen ((const char *) host_name)、
&g_ulDestinationIP、sl_AF_iNet);
if (lRetVal < 0)
{
UART_PRINT ("ConnectToHTTPServer 失败111 ");
ASSERT_ON_ERROR (GET_HOST_IP_FAILED);
}
UART_PRINT ("\r\nConnectToHTTPServer 222");
/*设置 HTTP 连接的输入参数*/
Addr.Sin_Family = AF_iNet;
Addr.sin 端口= htons (host_port);
addr.sin addr.s_addr = sl_Htonl (g_ulDestinationIP);
UART_PRINT ("\r\nConnectToHTTPServer 333 ");
HTTPCLI_con构(https 客户端);
UART_PRINT ("\r\nConnectToHTTPServer 444");
UART_PRINT ("\r\nHTTPServer 主机名:%s IP 地址:%d.%d.%d.%d "、
host_name、sl_IPv4_byte (g_ulDestinationIP、3)、
SL_IPV4_BYTE (g_ulDestinationIP、2)、
SL_IPV4_BYTE (g_ulDestinationIP、1)、
SL_IPV4_BYTE (g_ulDestinationIP、0));
lRetVal = HTTPCli_connect (https 客户端、(struct sockadr *)&addr、HTTPCL_TYPE_TLS、NULL);
如果(lRetVal < 0)
{
UART_PRINT ("\r\n 连接到服务器失败。 错误(%d)"、lRetVal);
ASSERT_ON_ERROR (SERVER_CONNECT_FAILED);
}
其他
{
UART_PRINT ("\r\n 成功创建到服务器的连接");
}
返回 lRetVal;
}
我是否需要在 Uniflash 的用户文件或系统文件部分中添加 DER 文件? 请确认
此致、
Sundar
应将证书添加为用户文件。
代码看起来不错-我想您是基于"http 客户端演示"、这是一个很好的参考。
该应用程序与 WebClient 库链接、该库包含在 SDK 安装中的 NetApp/http 文件夹下(预编译和源代码可用)。
您可以打开 WebClient 项目、找到并更改我之前提到的代码-在这种情况下、您需要重建库、然后使用新库构建应用 (或者、您可以从库中复制相关文件并将其添加到您的应用项目中-在这种情况下、您需要将 WebClient 文件夹添加到项目的包含路径中)。
HTTP 库使用 NWP 驱动程序的 API (例如 sl_Connect)。 我们需要获取 sl_Connect 的返回代码以更好地了解问题。
BTW。 我假设这是一个新设计。 为什么选择 CC3200?
适用于下一代 CC3220器件的 SDK 更易于使用、并且会定期获取软件更新(SDK 每季度更新一次)。
BR、
Kobi
您好、Kobi、
感谢您的输入。 它确实有很大帮助。 我已进行以下2项更改并将其固定。
我已将云服务器从 Window Server 2019更改为 Window Server 2016
我从不同供应商处购买了不同的证书(Digi Cert)
现在、我在设置 HTTPS 证书验证的日期时间时遇到问题。
我只能购买2年有效期证书。 如果我对日期和时间进行硬编码、我必须在2年后重新刷写程序。
是否有任何其他方法来查找日期时间。 我们的一个客户只允许端口443。 他挡住了端口80。
请帮助我们完成项目的最后阶段。
此致、
Sundar