Openssl - realizace příkazu STSL v rámci POP3 klienta – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Openssl - realizace příkazu STSL v rámci POP3 klienta – C / C++ – Fórum – Programujte.comOpenssl - realizace příkazu STSL v rámci POP3 klienta – C / C++ – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené — příspěvek s řešením.
Doomista+1
Stálý člen
26. 10. 2017   #1
-
0
-

Ahoj,

mám za úkol vypracovat POP3 klienta, který má podporovat mimojiné i SSL spojení a příkaz STSL, který spojení přepne z nezabezpečeného na šifrované. Pro implementaci mám použít openssl (verze 1.0.2). Podařilo se mi podle tutoriálu udělat nezabezpečené spojení, podařilo se mi udělat i SSL spojení, ale přepnutí z nezabezpečeného na zabezpečené opravdu netuším, jak udělat. Tuším, že bych měl vytvořit SSL objekt, nějak ho provázat s BIO objektem, který funguje jako socket a provést handshake se serverem, ale po odpoledni stráveném nad bídnou dokumentací už opravdu nevím.

Zde je minimální nutný kód pro vytvoření nezabezpečeného spojení a inializace SSL_CTX objektu:

SSL_load_error_strings();
ERR_load_BIO_strings();
SSL_library_init();
OpenSSL_add_all_algorithms();

BIO *bio;
SSL_CTX *ctx;
std::string addr = host + ":" + port;
bio = BIO_new_connect(addr.c_str());
BIO_do_connect(bio);

ctx = SSL_CTX_new(SSLv23_client_method());
SSL_CTX_set_default_verify_paths(ctx);

(pro zjednodušení jsem odstranil kontrolu chyb). A otázka zní:

Když teď pomocí BIO objektu odešlu na server příkaz "STLS" a přijde mi odpověď "+OK", jakým způsobem se inicializuje SSL objekt, prováže se s BIO objektem a provede se handshake?

Díky předem za všechny rady

Nahlásit jako SPAM
IP: 78.102.108.–
Na vše stačí iostream...
KIIV
~ Moderátor
+43
God of flame
26. 10. 2017   #2
-
+1
-
Zajímavé

Pokud je to do skoly a nesmis pouzivat nejake extra knihovny, tak se muzes aspon inspirovat: https://pocoproject.org/docs/Poco.Net.SecureSMTPClientSession.html

Jsou k tomu k dispozici zdrojaky, takze se to da vypozorovat (vykrast) z toho. Nicmene je to tam krapet slozitejsi (pouzivaji ruzne vychytavky). Ve zkratce to akorat zacnou prohanet jeste pres sifrovaci vrstvu.

Nahlásit jako SPAM
IP: 81.30.230.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Řešení
Doomista+1
Stálý člen
27. 10. 2017   #3
-
0
-
Vyřešeno Nejlepší odpověď

 #2 KIIV
No... výživné to tedy je... Každopádně jsem díky tomu přišel na řešení:

ssl = SSL_new(ctx);
// check ssl for NULL
SSL_set_bio(ssl, bio, bio);
int ret = SSL_connect(ssl);
// test ret for <= 0
// test SSL_get_verify_result(ssl) != X509_V_OK

Zajímavý je fakt, že na rozdíl od implicitního SSL spojení, kdy BIO_write/BIO_read rozklíčoval zašifrovaná data, tak vynucené SSL spojení už BIO objekt nezvládl, musel jsem přepnout na SSL_write/SSL_read.

Nahlásit jako SPAM
IP: 78.102.108.–
Na vše stačí iostream...
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 77 hostů

Podobná vlákna

IMAP vs POP3 — založil fix

POP3 a IMAP — založil survik1

Fsockopen a pop3 — založil tonez

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý