0

我正在英特尔 SGX 上构建 HTTP(S) 服务器,使用 mbedtls 作为我的 TLS 库。

我可以使用 HTTP 按预期提供内容,但是当使用 mbedtls 切换到 TLS/SSL 时,我遇到了一些更复杂的问题,并且错误消息难以理解。

具体来说,当我使用“https://”前缀访问我的网站时,我可以知道 mongoose/mbedtls 出去并读取 cert.pem 和 key.pem,然后在“/”上进行 recv 调用。在该 recv 调用期间,它会产生以下错误:

mg_ssl_if_mbed_err 0x7f9e8c023060 mbedTLS error: -0x7780

从 mbedtls src 我可以读到这个不太有用的解释:

#define MBEDTLS_ERR_SSL_FATAL_ALERT_MESSAGE -0x7780 /**< A fatal alert message was received from our peer. */

我的出发点是最简单的_web_server_ssl。

问题:如何启用 mg 和 mbedtls 调试日志记录?我如何解释这些错误(甚至;这个错误可能是什么原因)?

真诚感谢任何提示!

4

1 回答 1

1

https://github.com/cesanta/mongoose/blob/6.16/mongoose.c#L5161https://github.com/cesanta/mongoose/blob/6.16/mongoose.c#L5075

因此,您可以通过调用来提高调试日志级别cs_log_set_level(LL_VERBOSE_DEBUG)

您看到的错误很可能是由于您的客户不接受的无效证书。

尝试通过以下方式访问您的服务器curl -k https://IPADDR

-k选项禁用证书验证。如果该 curl 命令有效,那么只需修复您的证书 - 您的 C 代码可以正常工作。

于 2020-01-06T12:05:37.860 回答