gpt4 book ai didi

c - SMTPS:OpenSSL - SSL 例程:SSL23_GET_SERVER_HELLO:未知协议(protocol) s23_clnt.c:787:

转载 作者:太空宇宙 更新时间:2023-11-03 12:51:59 25 4
gpt4 key购买 nike

我正在使用 OpenSSL 来加密一些硬件发送的电子邮件。但是,每当我尝试调用 SSL_connect() 时,我都会得到:SSL 例程:SSL23_GET_SERVER_HELLO:未知协议(protocol)

发送“EHLO”和“STARTTLS”后,我调用了以下函数:

SSL_CTX *ctx = NULL;
SSL *ssl = NULL;

void CreateTLSSession(int sockfd)
{
printf("///////////////creating TLS Session/////////////////////\n");
SSL_library_init();
SSL_load_error_strings();
OpenSSL_add_all_algorithms();
ctx = SSL_CTX_new(SSLv23_client_method());
if (ctx == NULL)
{
printf("failed to initialize context\n");
return;
}
SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv2);
ssl = SSL_new(ctx);
if (!SSL_set_fd(ssl, sockfd))
{
printf("failed to bind to socket fd\n");
return;
}
if (SSL_connect(ssl) < 1)
{
ERR_print_errors_fp(stdout);
fflush(stdout);
printf("SSL_connect failed\n");
return;
}
}

我试过连接到:

  • smtp.live.com : 587 --> SSL 例程:SSL23_GET_SERVER_HELLO:未知协议(protocol) s23_clnt.c:787:
  • smtp.live.com:25 --> SSL 例程:SSL23_GET_SERVER_HELLO:未知协议(protocol) s23_clnt.c:787:
  • smtp.gmail.com : 587 --> SSL 例程:SSL23_GET_SERVER_HELLO:未知协议(protocol) s23_clnt.c:787:
  • smtp.gmail.com : 465 --> 服务器根本没有响应!
  • smtp.gmail.com : 25 --> SSL routines:SSL23_GET_SERVER_HELLO:unknown
    协议(protocol) s23_clnt.c:787:

我尝试了不同的端口,因为关于这个 SO 的一些类似问题表明,这种错误通常与使用错误的 SSL 端口有关。

我是不是漏掉了什么?

更新:

所有其他方法(即 TLSv1_1_method()、SSLv3_method() ...)导致 SSL3_GET_RECORD:版本号错误

更新:

我能够在 wireshark 上观察到以下内容:

“EHLO”

“为您服务”

“开始TLS”

“准备开始”

-->现在调用上面的函数

不可读的请求(已加密)

不可读的回复(已加密)

-->错误

最佳答案

端口 587 和 25 上的 SMTP 服务器通常是纯文本,只有在初始 SMTP 对话和来自客户端的 STARTTLS 命令后才会切换到 TLS。在纯文本套接字上尝试 SSL_connect 将失败。

关于c - SMTPS:OpenSSL - SSL 例程:SSL23_GET_SERVER_HELLO:未知协议(protocol) s23_clnt.c:787:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22449946/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com