我使用openssl建立到gmail.com:25的安全smtp連接。因此,我可以成功連接到服務器併發送一條命令STARTTLS(我收到220 2.0.0準備啓動TLS)。然後無需斷開執行以下代碼:C:上的SMTP:STARTTLS通過OpenSSL
SSL_METHOD* method = NULL;
SSL_library_init();
SSL_load_error_strings();
method = SSLv23_client_method();
ctx = SSL_CTX_new(method);
if (ctx == NULL)
{
ERR_print_errors_fp(stderr);
}
SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv2);
ssl = SSL_new(ctx);
if (!SSL_set_fd(ssl, socket))
{
ERR_print_errors_fp(stderr);
return;
}
if (ssl)
{
if (SSL_connect((SSL*)ssl) < 1)
{
ERR_print_errors_fp(stderr);
}
// then i think i need to send EHLO
}
但調用所以SSL_connect後,我得到一個錯誤:
24953:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:601:
如果我使用SSLv3_client_method我得到一個錯誤:
18143:error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number:s3_pkt.c:284.
而且如果TLSv1_client_method :
21293:error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number:s3_pkt.c:284:
爲什麼?我做錯了什麼?
如果我使用SSLv3_client_method我得到一個錯誤: 18143:錯誤:1408F10B:SSL例程:SSL3_GET_RECORD:錯誤的版本號:s3_pkt.c:284。 而如果TLSv1_client_method: 21293:錯誤:1408F10B:SSL例程:SSL3_GET_RECORD:錯誤的版本號:s3_pkt.c:284: 滑稽:) – Jackell 2010-04-02 06:34:56