Próbuję skonfigurować serwer WWW w Delphi XE3 przy użyciu Indy i OpenSSL, które mogą obsługiwać ruch przez połączenia HTTP i HTTPS na tym samym porcie.Jak mogę obsługiwać ruch SSL i nie-SSL na tym samym porcie przy użyciu TIdTCPServer i OpenSSL w Delphi XE3?
Widziałem dwa główne podejścia do tego, i wydaje się, że nie działają one dla mnie.
Po pierwsze: z góry TLS/SSL. Obejmuje to czytanie pierwszych kilku bajtów strumienia w poszukiwaniu części "Client-Hello" niezabezpieczonego uzgadniania i (jeśli istnieje) wywołania odpowiedzi uzgadniania SSL serwera, ale jeśli to zrobię, biblioteka OpenSSL nie rozpoznaje uścisk dłoni, ponieważ usunąłem wiodące bajty wiadomości.
Po drugie: TLS po STARTTLS (lub odpowiedniku). Obejmuje to wysłanie specjalnego zestawu znaków (STARTTLS), po którym natychmiast następuje "Client-Hello". Serwer pozostawia cały komunikat uzgadniania protokołu SSL w stanie nienaruszonym, aby przejść do biblioteki OpenSSL. Problem z tym podejściem polega na tym, że większość przeglądarek internetowych go nie obsługuje (RFC 2817).
Na podsumowanie dwóch podejść, zajrzeć tutaj: What happens on the wire when a TLS/LDAP or TLS/HTTP connection is set up?)
Jak mogę obsługiwać ruch SSL i nie-SSL na tym samym porcie używając TIdHTTPServer i OpenSSL w Delphi XE3?
Dzięki za alternatywne sugestie! Zajrzę do tych i jeśli skończę wdrażanie któregokolwiek z nich, opublikuję ponownie tutaj. – Andy