Cześć,
w mojej aplikacji klient-serwer dodalem obsluge szyfrowanego polaczenia SSL. Inicjuje wszystko po stronie serwera w ten sposob:
uses
lNet, lNetSSL
(..)
FCon := TLTCP.Create(nil); // create new TCP connection
FCon.OnError := @OnEr; // assign all callbacks
FCon.OnAccept := @OnAc;
FCon.OnDisconnect := @OnDs;
FCon.OnAccept := @OnAc;
FCon.OnReceive:= @OnRe;
FCon.Timeout := 100;
FCon.ReuseAddress := True;
SSL:=TLSSLSession.Create(nil);
SSL.CAFile:='sec/cert.crt';
SSL.KeyFile:='sec/key.txt';
SSL.Method:=msSSLv2or3;
FCon.Session:=SSL;
kiedy nie bylo szyfrowania wszystko bylo ok. Teraz po polaczeniu klienta z serwerem ten oprocz wlasciwych pakietow otrzymuje randomowo puste pakiety.
Po polaczeniu klient otrzymuje od serwera komunikat i w logu wyglada to tak (bez SSL):
ReceiveMsg: ServerMsg=Hello
kiedy lacze z pomoca SSL nagle pojawia sie cos takiego:
ReceiveMsg:
ReceiveMsg:
ReceiveMsg:
ReceiveMsg:
ReceiveMsg: ServerMsg=Hello
puste pakiety pojawiaja sie roznie za kazdym razem kiedy uruchomie aplikacje klienta.
Serwer wysyla do klienta info w ten sposob:
FCon.SendMessage('Message', aSocket);
Dostalem info, ze to moze byc problem z metoda polaczenia (w moim przypadku) msSSLv2or3 ale nie znalazlem zadnej informacji co moze byc z tym nie tak.
Czy macie moze pomysl co moze powodowac takie zachowanie?
Jest tez drugi problem. Kiedy nie uzywam polaczenia moge na komputerze z ktorego testuje uruchomic dowolna ilosc aplikacji klienta i wszystko jest ok. Kiedy stosuje polaczenie z SSL pakiety przestaja docierac albo klient otrzymuje pakiet przeznaczony dla innego. I tak pewnie dodam blokowanie wielokrotnego uruchamiania aplikacji w wersji produkcyjnej ale ciekawi mnie czy takie zachowanie wyniki z budowy polaczenia SSL.