Next: Modul FTP - File
Up: Modul SSL - Secure
Previous: Jak pracuje SSL v
Každý HTTPS požadavek je uvozen klíčovým slovem CONNECT
následovaný adresou cílového https serveru, číslem portu a cestu k požadované
stránce. Funkce na rozpracování požadavku od klienta pozná, že se jedná o HTTPS
požadavek a nastaví typ metody ve struktuře http_header na METHOD_CONNECT.
Přehled všech podporovaných metod je možné nalézt v souboru http.h
Modul SSL je volán jen a jen v případě, že se jedná o metodu METHOD_CONNECT.
V případě, že je tento modul volán, provádí následující kroky:
- volání funkce srv_connect(...), která se napojí na cílový HTTPS server
- klientovi se pošle zpráva o úspěšném napojení
- volá se funkce net_sslproxy(...)
- zpracování návratové hodnoty funkce net_sslproxy(...)
- ukončení modulu a vyřízení požadavku, další moduly se již nevolají
- net_sslproxy()
- Tato funkce int net_sslproxy(int sock,int srvsock) zajišťuje
vlastní SSL proxying. Jediné co tato funkce dělá je, že inteligentně kopíruje
data z jednoho socketu do druhého a naopak. SSL protokol je stavový protokol
a proto není možné jen přečíst data z jednoho socketu a hrubě je zapsat na druhý
socket. Je nutné, aby zápis i čtení probíhaly v non-block režimu. Ve smyčce
se provádí následující operace:
- přečte se "co se dá" z klientského socketu (int sock)
- zapíše se všechno co se přečetlo do serverového socketu (int srvsock)
- přečte se "co se dá" ze serverového socketu
- zapíše se všechno co se přečetlo do klientského socketu
Těmito operacemi je zaručena stavovost daného protokolu a klient se může s https
serverem dohodnout na šifrovacích klíčích.
Next: Modul FTP - File
Up: Modul SSL - Secure
Previous: Jak pracuje SSL v
Stanislav Pavlicek
2000-06-12