J'utilise OpenSSL pour construire des connexions sécurisées à smtp gmail.com:25~~V~~plural~~3rd. Donc, je peux me connecter avec succès au serveur et envoie une commande STARTTLS (je reçois 220 2.0.0 Prêt à démarrer TLS). Ensuite, exécutez le code suivant sans déconnecter:SMTP sur C: STARTTLS via 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
}
Mais après avoir appelé SSL_CONNECT je reçois une erreur:
24953:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:601:
Si je SSLv3_client_method je reçois une erreur:
18143:error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number:s3_pkt.c:284.
Et si TLSv1_client_method :
21293:error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number:s3_pkt.c:284:
Pourquoi? Ce que je fais mal?
Si je SSLv3_client_method je reçois une erreur: 18143: Erreur: 1408F10B: routines SSL: ssl3_get_record: numéro de la mauvaise version: s3_pkt.c: 284. Et si TLSv1_client_method: 21293: Erreur: 1408F10B: routines SSL: ssl3_get_record: mauvais numéro de version: s3_pkt.c: 284: drôle :) – Jackell