Thread 中讨论的其他器件:CC3200
您好,
我们使用 Wi-Fi 连接通过 CC3200上的 TCP IP 协议栈开发了 HTTP 服务器1.1。
如何使用 SSL 使用安全连接,如何在 CC3200中确保套接字连接套接字的安全
CC3200中是否有任何库可用于安全连接?
请在这方面提供帮助。
谢谢 、此致
Shailendra sen
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.
您好,
我们使用 Wi-Fi 连接通过 CC3200上的 TCP IP 协议栈开发了 HTTP 服务器1.1。
如何使用 SSL 使用安全连接,如何在 CC3200中确保套接字连接套接字的安全
CC3200中是否有任何库可用于安全连接?
请在这方面提供帮助。
谢谢 、此致
Shailendra sen
您好!
CC3200内部集成了 SSL/TLS 堆栈。 只需正确创建安全套接字并设置证书等参数即可。 最适合您的起点可以是 SDK 示例 WebSocket _Simple 和 http 服务器库(\netapps\http\server\)。 此库集成了安全的 http 服务器、可能是您的理想选择。
其他资源:
(注意:CC3200一次仅支持两个安全套接字)
1月
您好,
我将在这里共享套接字代码、用于测试 postman 的 h secure client、
我已经生成了 serverkey.der 和 servercert.der、并按照 CC 3200文档中的说明进行了刷写。
稍后我将尝试从 postman 工具进行连接,我还提供了相同的 serverkey.der 和 servercert.der,
我也在这里挂着鲨鱼的记录,同时也在给 postman 的 GET 请求。
IP 为192.168.1.1要查看捕获 packet.it 在从客户端发送 SYN 数据包时失败,需要在服务器端纠正一些问题,请在这方面提供帮助。
//
//版权所有(C) 2014 Texas Instruments Incorporated
//
//保留所有权利。 德州仪器(TI)公司的财产。
//使用、复制或披露此代码的受限权限为
//通过合同授予。
//未经的书面许可,不得使用该程序
// Texas Instruments Incorporated 或违反条款和条件
//提供本计划的协议中规定,
//并且在任何情况下都不能与非 TI 连接器件一起使用。
//
//
/**
*@defgroup HttpSocket
*此模块执行所有 HTTP 套接字操作
*
*@{
*
#include
#include
#include "simplelink.h"
#include "hw_types.h"
#include "OSI.h"
#define OSI_DELAY (x) OSI_SLEEP (x);//操作系统空闲
int OpenTCPServerSocket (unsigned int uiPortNum)
{
int iSockDesc、iRetVal;
saddr_in sServerAddress;
SlSockNonBlocking_t enableOption;
enableOption.NonblockingEnabled = 1;
//
//打开安全套接字
//
if (443 =uiPortNum)
{
iSockDesc = sl_Socket (sl_AF_iNet、sl_sock_stream、sl_SEC_Socket);
}
否则//不安全
{
iSockDesc = sl_Socket (sl_AF_iNet、sl_sock_stream、sl_IPPROTO_TCP);
}
if (iSockDesc < 0)
{
返回-1;
}
// if (443 =uiPortNum)
// {
// ////非阻塞套接字-启用非阻塞模式
// iRetVal = sl_SetSockOpt (iSockDesc、SOL_Socket、SL_SO_SECMETHOD、&enableOption、sizeof (enableOption));
// }
// 否则
// {
iRetVal = sl_SetSockOpt (iSockDesc、SOL_Socket、sl_SO_NONBLOCKING、enableOption、sizeof (enableOption));
// }
if (iRetVal < 0)
{
CloseTCPServerSocket (iSockDesc);
}
返回-1;
// }
if (443 =uiPortNum)
{
iRetVal = sl_SetSockOpt (iSockDesc、sl_SOL_Socket、sl_SO_SECURE_FILESS_PRIVATE_FILE_NAME、sl_SSL_SRV_KEY、strlen (sl_SSL_SRV_KEY));
if (iRetVal < 0)
{
CloseTCPServerSocket (iSockDesc);
返回-1;
}
iRetVal = sl_SetSockOpt (iSockDesc、sl_SOL_Socket、sl_SO_SECURE_FILEST_CERTIFICATE_FILE_NAME、sl_SSL_SRV_CERT、strlen (sl_SSL_SRV_CERT));
if (iRetVal < 0)
{
CloseTCPServerSocket (iSockDesc);
返回-1;
}
}
//
//绑定-为套接字分配端口
//
sServerAddress.Sin_Family = AF_iNet;
sServerAddress.Sin_addr.s_addr = htonl (INADDR_ANY);
sServerAddress.Sin_port = htons (uiPortNum);
if (bind (iSockDesc,(struct sockaddr*)&sServerAddress,sizeof (sServerAddress))!= 0)
{
CloseTCPServerSocket (iSockDesc);
返回-1;
}
返回 iSockDesc;
}
int CreateTCPServerSocket (unsigned int uiPortNum)
{
int iSockDesc =-1;
unsigned char connectRetries = 0;
while (connectRetries +< SERVER_MAX_SETUP_RETRY)
{
iSockDesc = OpenTCPServerSocket (uiPortNum);
IF (iSockDesc < 0)
{
继续;
}
if (监听(iSockDesc、HTTP_CORE_MAX_connections)!= 0)
{
CloseTCPServerSocket (iSockDesc);
iSockDesc =-1;
继续;
}
其他
{
connectRetries = 0;
中断;
}
}
返回 iSockDesc;
}
int CloseTCPServerSocket (int iSockDESC)
{
int ittr = 0;
if (iSockDesc < 0)
{
返回0;
}
操作
{
if (sl_close (iSockDESC)>=0)
{
iSockDesc =-1;
//HttpDebug (DEBUGCOM、"HTTP 服务器套接字已关闭\n\r\n);
返回0;
}
其他
{
//HttpDebug (DEBUGCOM、"\n HTTP 客户端套接字关闭错误\n\n");
OSI_DELAY (500);//等待500ms
}
ITTR++;
}while (ittr < 3);
返回-1;
}
int CreateTCPCLientSocket (int iSockDesc)
{
saddr sClientAddr;
SlSockklen_t uiClientAddrLen = sizeof (sClientAddr);
int sock =-1;
SlTimeval_t timeVal;
SlSockNonBlocking_t enableOption;
sock =接受(iSockDesc、&sClientAddr、&uiClientAddrLen);
if (sock >= 0)
{
enableOption.NonblockingEnabled = 0;
//阻塞套接字-启用阻塞模式
if (sl_SetSockOpt (sock、SOL_socket、sl_SO_nonblocking、enableOption、sizeof (enableOption))< 0)
{
CloseTCPClientSocket (sock);
返回-1;
}
timeVal.tv_sec = 1; // 1秒
timeVal.tv_usec = 0; //微秒。 10000微秒分辨率
if (((sl_SetSockOpt (sock、SOL_socket、sl_SO_RCVTIMEO、&timeVal、sizeof (timeVal)))< 0)
{
CloseTCPClientSocket (sock);
返回-1;
}//启用接收超时
}
返回袜子;
}
int CloseTCPClientSocket (int iSockDESC)
{
int ittr = 0;
if (iSockDesc < 0)
{
返回0;
}
操作
{
if (sl_close (iSockDESC)>=0)
{
iSockDesc =-1;
//HttpDebug (DEBUGCOM、"\n HTTP 客户端套接字已关闭\n\r\n);
返回0;
}
其他
{
//HttpDebug (DEBUGCOM、"\n 客户端套接字关闭错误\n\n");
OSI_DELAY (500);//等待500ms
}
ITTR++;
}while (ittr < 3);
返回-1;
}
int ClientSocketSend (长套接字、char * buffer、unsigned int len)
{
int send_len = 0、Ittr = 0;
操作
{
send_len =(int) send ((int) socket、buffer、(int) len、0);
if (send_len >0)
{
if (len!= send_len)
{
//HttpDebug (DEBUGCOM、"客户端发送长度不匹配%d \n\r\n、SEND_Len);
send_len =-1;
}
返回 SEND_Len;
}
否则、如果(send_len!= sl_EAGAIN)
{
//HttpDebug (DEBUGCOM、"\n 客户端套接字发送错误%d\n\r\n、send_len);
返回-1;
}
Ittr++;
} while (((sl_EAGAAIN = send_len));
//HttpDebug (DEBUGCOM、"\n 客户端发送超时%d\n\r\n、send_len);
返回-1;
}
您好、Jesu、
感谢您的回复,
问题是我尝试使用 postman 工具从 http 客户端连接到 http 服务器。
因此无法从服务器获取响应,现在我更改了 Postman 中的设置,没有设置任何发送 GET 命令的证书,此外,这是从服务器获取响应,但当客户端发送“客户端 Hello”时,服务器会发送 FIN 数据包。
因此、安全套接字连接无法与我共享的上述服务器套接字代码一起工作。
我已附加 PNG 文件、握手的快照,如果服务器端的某些内容可以改进或缺少,
请提供建议和帮助。
谢谢、此致