【发布时间】:2015-08-29 22:48:39
【问题描述】:
我们的嵌入式系统上运行着一个 OpenSSL,它正在运行 ECOS OS。我们现在正在将我们的 OpenSSL 升级到 1.0.2 版本。我们已经成功移植和编译了 OpenSSL 库。但是,当我们尝试使用 SSL(通过 https)连接我们的设备时,握手失败并总是出现错误记录 mac 警报。我们已启用 OpenSSL 调试选项,但无法确定其失败的原因。
有人将最新的 OpenSSL 代码移植到 ECOS 吗?我们是否需要为 ECOS 使用带有最新 OpenSSL 代码的任何特殊编译标志?
供参考,这里是ssl3_get_record的相关部分:
mac = rr->data + rr->length;
i=s->method->ssl3_enc->mac(s,md,0 /* not send */);
if (i < 0 || CRYPTO_memcmp(md, mac, (size_t)mac_size) != 0)
{
al=SSL_AD_BAD_RECORD_MAC;
SSLerr(SSL_F_SSL3_GET_RECORD,SSL_R_DECRYPTION_FAILED_OR_BAD_RECORD_MAC);
goto f_err;
}
【问题讨论】:
-
感谢您的信息,也使用 1.0.2 进行了测试,仍然遇到同样的问题。请注意,我们在嵌入式系统上运行的 ECOS 没有文件系统。如果我们错过了一些编译标志,那么会徘徊吗?
-
我不确定您是否缺少任何
$cflags或$ldflags,因为您没有提供它们:) 您的Configure triplet 是什么(我想您添加了一个自定义的)?用于配置库的other options 是什么?您的 ROM 是否有空间进行自检?即使它是一次性构建以确保库正确构建和执行.... -
另外,您在 eCos 网站上看到 Andrew Lunn of Ascom has made available a port of the OpenSSL library.... 了吗?它可能具有带有自定义
cflags和$ldflags设置的配置三元组。 -
我们已经在使用 1.9.6 b 的安德鲁端口了。由于 SSL 中最近存在漏洞,我们必须升级我们的 SSL 以支持更高版本。即TLS1.1 和 TLS1.2。
-
哦,升级做得很好:) 他使用的
Configure三元组是什么?它可能是自定义的,所以只需使用它。 (然后将代码捐赠回 eCos 社区以帮助他人)。
标签: ssl openssl cryptography embedded ecos