与 WolfSSL 的握手问题
Trouble with handshake with WolfSSL
我在使用 WolfSSL 时遇到了一些问题。我试图在 WolfSSL 论坛上提问,但现在无法注册。
我正在使用 WolfSSL 为 Nintendo Wii 开发一个简单的电子邮件客户端。 WolfSSL 是唯一声称具有 Wii 兼容性的库。我已经使用 devKitPro 成功构建了这个库,一切似乎都在工作,但它在握手时失败了。
下面是一些示例代码:
bool Internet::sslSetup(){
if(wolfSSL_Init() != SSL_SUCCESS){
sslReportError();
return false;
}
setState("SSL Init");
method = wolfSSLv23_client_method();
if (method == NULL) {
sslReportError();
return false;
}
setState("SSL Method Set");
ctx = wolfSSL_CTX_new(method);
wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, 0);
if(ctx == NULL){
sslReportError();
return false;
}
setState("SSL Ctx Init");
sslSocket = wolfSSL_new(ctx);
if(sslSocket == NULL){
sslReportError();
return false;
}
setState("SSL Socket Init");
wolfSSL_set_fd(sslSocket, socket);
if(sslSocket == NULL){
sslReportError();
return false;
}
setState("SSL Socket connected to net socket");
return true;
}
我没有办法在Wii 上进行调试,所以只能进行文本调试。这是我的 WolfSSL 调试输出日志:
13 05 2016 00:55 wolfSSL Entering wolfSSL_Init
13 05 2016 00:55 wolfSSL Entering WOLFSSL_CTX_new
13 05 2016 00:55 wolfSSL Entering wolfSSL_CertManagerNew
13 05 2016 00:55 wolfSSL Leaving WOLFSSL_CTX_new, return 0
13 05 2016 00:55 wolfSSL Entering wolfSSL_CTX_set_verify
13 05 2016 00:55 wolfSSL Entering SSL_new
13 05 2016 00:55 wolfSSL Leaving SSL_new, return 0
13 05 2016 00:55 wolfSSL Entering SSL_set_fd
13 05 2016 00:55 wolfSSL Leaving SSL_set_fd, return 1
13 05 2016 00:55 wolfSSL Entering SSL_connect()
13 05 2016 00:55 growing output buffer
13 05 2016 00:55 Shrinking output buffer
13 05 2016 00:55 connect state: CLIENT_HELLO_SENT
13 05 2016 00:55 received record layer msg
13 05 2016 00:55 got ALERT!
13 05 2016 00:55 Got alert
13 05 2016 00:55 wolfSSL error occurred, error = 40
13 05 2016 00:55 wolfSSL error occurred, error = -313
有什么想法吗?正在尝试连接到端口 465 上的 smtp.gmail.com。
看起来像是 TLS 握手错误,因为:
- 客户端发送了客户端hello
- 它收到了警报
- alert 40表示握手错误,见
https://www.rfc-editor.org/rfc/rfc5246#section-7.2
接下来的步骤是:
- 调查 -313 错误是什么
- 您能否从同一网络上的计算机获取 wireshark 跟踪以获取服务器 hello 包含的更多详细信息?例如这可能由于多种原因而发生,例如服务器对客户端提供的密码列表不满意
我在使用 WolfSSL 时遇到了一些问题。我试图在 WolfSSL 论坛上提问,但现在无法注册。
我正在使用 WolfSSL 为 Nintendo Wii 开发一个简单的电子邮件客户端。 WolfSSL 是唯一声称具有 Wii 兼容性的库。我已经使用 devKitPro 成功构建了这个库,一切似乎都在工作,但它在握手时失败了。
下面是一些示例代码:
bool Internet::sslSetup(){
if(wolfSSL_Init() != SSL_SUCCESS){
sslReportError();
return false;
}
setState("SSL Init");
method = wolfSSLv23_client_method();
if (method == NULL) {
sslReportError();
return false;
}
setState("SSL Method Set");
ctx = wolfSSL_CTX_new(method);
wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, 0);
if(ctx == NULL){
sslReportError();
return false;
}
setState("SSL Ctx Init");
sslSocket = wolfSSL_new(ctx);
if(sslSocket == NULL){
sslReportError();
return false;
}
setState("SSL Socket Init");
wolfSSL_set_fd(sslSocket, socket);
if(sslSocket == NULL){
sslReportError();
return false;
}
setState("SSL Socket connected to net socket");
return true;
}
我没有办法在Wii 上进行调试,所以只能进行文本调试。这是我的 WolfSSL 调试输出日志:
13 05 2016 00:55 wolfSSL Entering wolfSSL_Init
13 05 2016 00:55 wolfSSL Entering WOLFSSL_CTX_new
13 05 2016 00:55 wolfSSL Entering wolfSSL_CertManagerNew
13 05 2016 00:55 wolfSSL Leaving WOLFSSL_CTX_new, return 0
13 05 2016 00:55 wolfSSL Entering wolfSSL_CTX_set_verify
13 05 2016 00:55 wolfSSL Entering SSL_new
13 05 2016 00:55 wolfSSL Leaving SSL_new, return 0
13 05 2016 00:55 wolfSSL Entering SSL_set_fd
13 05 2016 00:55 wolfSSL Leaving SSL_set_fd, return 1
13 05 2016 00:55 wolfSSL Entering SSL_connect()
13 05 2016 00:55 growing output buffer
13 05 2016 00:55 Shrinking output buffer
13 05 2016 00:55 connect state: CLIENT_HELLO_SENT
13 05 2016 00:55 received record layer msg
13 05 2016 00:55 got ALERT!
13 05 2016 00:55 Got alert
13 05 2016 00:55 wolfSSL error occurred, error = 40
13 05 2016 00:55 wolfSSL error occurred, error = -313
有什么想法吗?正在尝试连接到端口 465 上的 smtp.gmail.com。
看起来像是 TLS 握手错误,因为:
- 客户端发送了客户端hello
- 它收到了警报
- alert 40表示握手错误,见 https://www.rfc-editor.org/rfc/rfc5246#section-7.2
接下来的步骤是:
- 调查 -313 错误是什么
- 您能否从同一网络上的计算机获取 wireshark 跟踪以获取服务器 hello 包含的更多详细信息?例如这可能由于多种原因而发生,例如服务器对客户端提供的密码列表不满意