您好!
我是 Siemens 的软件工程师。
我们使用 CC3220SF 作为 http 服务器、浏览器可以通过 http 和 https 访问它。
最近有一个安全测试案例失败。 但是 、我们几年来一直没有修改 CC3220SF 的源代码。 原因是安全测试案例发生了变化、对 SSL/TLS 协议的安全性有更严格的要求。
测试结果如下:
测试结果:一个结果
|
192.168.1.1 |
使用 G120 https 和 http 克隆路由器 |
443. |
失败 |
功能 |
密码顺序 |
是的 |
否 |
功能不受支持 |
[2021-06-04 14:25:37.288822][1m[4m 测试密码类别[m
[2021-06-04 14:25:37.290446]
[2021-06-04 14:25:37.324404][1m NULL 密码(无加密) [m[1;32m 未提供(确定)[m
[2021-06-04 14:25:37.360377][1m 匿名空密码器(无身份验证) [m[1;32m 未提供(正常)[m
[2021-06-04 14:25:37.396487][1m 导出密码(不带 ADH+NULL) [m[1;32m 未提供(OK)[m
[2021-06-04 14:25:37.432987][1m 低电平:64位+ DES、RC[2、4](不带导出功能) [m[0;32m 未提供(正常)][m
[2021-06-04 14:25:37.478357][1m Triple DES Ciphers / Idea [未提供
[2021-06-04 14:25:37.534542][1m 停产 CBC 密码(AES、ARIA 等) [未提供
我们 的另一个产品使用 Nginx 作为在 Linux 环境中运行的 Web 服务器,该测试案例也失败了。 但 测试用例可以通过启用 Nginx webserver.conf 文件中名为"SSL_pelpe_server_ciphers"的选项来实现。 以下是与 SSL 相关的配置(添加最后一行并通过测试用例、否则失败):
SSL 打开;
SSL_certificate /home/root/sconnect/user_conf/server.crt;
SSL_certificate_key /home/root/sconnect/user_conf/server.key;
SSL_protocols TLSv1.1 TLSv1.2;
SSL_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECSHE-RSA-AES128-SHA256:ECDHE-ECDSAA-AES128-SHA256;
SSL_Prefer 服务器密码开启;
我尝试在 sl_socket.h 文件中找到类似的配置、如"SSL_Pref_server_ciphes"、但未找到任何内容。 目前、我们在 CC3220SF 中按如下方式配置 SSL:
if (443 =uiPortNum)
{
//我们要使用的安全方法
SlSockSecureMethod_t 方法;
method.SecureMethod = sl_SO_SEC_METHOD_TLSv1_2;
iRetVal = sl_SetSockOpt (iSockDesc、sl_SOL_Socket、sl_SO_SECMETHOD、(_u8 *)&method、sizeof (method));
if (iRetVal < 0)
{
CloseTCPServerSocket (iSockDesc);
返回-1;
}
//密码类型
SlSockSecureMask_t ciph={0};
cips.SecureMask =
//sl_SEC_MASK_SSL_RSA_ITH_RC4_128_SHA |//0
//sl_SEC_MASK_SSL_RSA_ITH_RC4_128_MD5 |//0
//sl_SEC_MASK_TLS_RSA_ITH_AES_256_CBC_SHA |//1.
//SL_SEC_MASK_TLS_DHE_RSA_ITH_AES_256_CBC_SHA |//2.
//SL_SEC_MASK_TLS_ECDHE_RSA_ITH_AES_256_CBC_SHA |//1.
//SL_SEC_MASK_TLS_ECDHE_RSA_ITH_RC4_128_SHA |//0
//SL_SEC_MASK_TLS_RSA_WITH_AES_128_CBC_SHA256 |//1.
//SL_SEC_MASK_TLS_RSA_ITH_AES_256_CBC_SHA256 |//1.
SL_SEC_MASK_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 |//1-1
//SL_SEC_MASK_TLS_ECDHE_ECDSA_ABLE_AES_128_CBC_SHA256 |//2.
//sL_SEC_MASK_TLS_ECDHE_ECDSA_OTH_AES_128_CBC_SHA |//2.
//sL_SEC_MASK_TLS_ECDHE_ECDSA_OTH_AES_256_CBC_SHA |//2.
//sl_SEC_MASK_TLS_RSA_WITH_AES_128_GCM_SHA256 |//1.
//sl_SEC_MASK_TLS_RSA_WITH_AES_256_GCM_SHA384 |//3.
//sL_SEC_MASK_TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 |//1.
//sL_SEC_MASK_TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 |//3.
SL_SEC_MASK_TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 |//1-1
SL_SEC_MASK_TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 |
SL_SEC_MASK_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 |//1-1
SL_SEC_MASK_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 |
//sL_SEC_MASK_TLS_ECDHE_ECDSA_OTH_CHACHA20_POLY1305_SHA256 |2.
//SL_SEC_MASK_TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 |2.
//sl_SEC_MASK_TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256|2
0;
iRetVal = sl_SetSockOpt (iSockDesc、sl_SOL_Socket、sl_SO_SECURE_MASK、cipher、sizeof (SlSockSecureMask_t));
if (iRetVal < 0)
{
CloseTCPServerSocket (iSockDesc);
返回-1;
}
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;
}
}
那么、我的问题是如何使 SSL 相关测试案例作为我们的另一个产品通过?