Sto provando a configurare un server Web in Delphi XE3 utilizzando Indy e OpenSSL che possono servire il traffico su entrambe le connessioni HTTP e HTTPS sulla stessa porta.Come posso supportare il traffico SSL e non SSL sulla stessa porta utilizzando TIdTCPServer e OpenSSL in Delphi XE3?
Ho visto due approcci principali a questo, e nessuno dei due sembra funzionare per me.
Primo: TLS up-front/SSL. Ciò comporta la lettura dei primi byte dello stream per cercare la parte "Client-Hello" dell'handshake non sicuro e (se trovato) che richiama la risposta handshake SSL del server, ma se lo faccio, la libreria OpenSSL non riconosce la stretta di mano perché mi sono tolto i byte principali del messaggio.
Secondo: TLS dopo STARTTLS (o equivalente). Ciò comporta l'invio di un set speciale di caratteri (STARTTLS) che sarà immediatamente seguito da "Client-Hello". Il server lascia quindi intatto l'intero messaggio SSL handshake per passare alla libreria OpenSSL. Il problema con questo approccio è che la maggior parte dei browser Web non la supportano (RFC 2817).
Per una sintesi dei due approcci, guarda qui: What happens on the wire when a TLS/LDAP or TLS/HTTP connection is set up?)
Come posso supportare il traffico SSL e non SSL sulla stessa porta utilizzando TIdHTTPServer e OpenSSL in Delphi XE3?
Grazie per i suggerimenti alternativi! Analizzerò quelli e se finisco per implementare uno di quelli che posterò di nuovo qui. – Andy