Unterstützung für bidirektionales TLS / HTTPS mit ELB
Einen Weg (oder server-Seite) TLS/HTTPS mit Amazon Elastic Load Balancing gut dokumentiert
Unterstützung für zwei-Wege - (oder client-Seite) TLS/HTTPS ist nicht so klar aus der Dokumentation.
Vorausgesetzt ELB ist die Beendigung eines TLS/HTTPS-Verbindung:
- Tut ELB Unterstützung client authentifiziert HTTPS-verbindungen?
- Wenn ja, ist ein server diente von ELB erhalten eine X-Forwarded-* - header zum identifizieren der client authentifiziert ELB?
ELB unterstützt TCP-Weiterleitung so eine EC2 gehostete server herstellen können zwei-Wege-TLS/HTTPS-Verbindung, aber in diesem Fall bin ich daran interessiert, ELB Beendigung des TLS/HTTPS-Verbindung und identifizieren den AUFTRAGGEBER.
InformationsquelleAutor der Frage pd40 | 2014-01-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich weiß nicht, wie es konnte, in Doppel-ended-HTTPS-Modus, denn der ELB ist über eine zweite TCP-Verbindung zum back-end-server, und intern ist es entschlüsseln/verschlüsseln der Nutzlast zu/von der client-und server... also der server würde nicht sehen, das client-Zertifikat direkt, und es gibt keine dokumentierten X-Forwarded-* Header andere als -, - Protokoll und -Port.
Mit einem ELB Ausführung im TCP-Modus, auf der anderen Seite, die SSL-Aushandlung erfolgt direkt zwischen dem client und dem server mit ELB blind binden die Datenströme zusammen. Wenn der server unterstützt die
PROXY
- ProtokollSie könnte diese Funktionalität aktivieren, in der ELBso dass Sie könnte ermitteln die client IP und port auf dem server, sowie die Identifizierung der client-Zertifikat direkt, da würde der client verhandeln direkt mit Ihnen... obwohl das heißt, Sie sind nicht mehr die Auslagerung der SSL-zu dem ELB, im Rahmen des Punkt, was Sie versuchen zu tun.Update:
Sieht es nicht aus, es gibt einen Weg, um alles, was Sie tun wollen-offload SSL und Identifizierung der client-certificatite -- mit ELB allein. Die Informationen, die unten dargestellt ist, "für was es Wert ist."
Offenbar HAProxy hat Unterstützung für client-Zertifikate in der version 1.5und übergibt die Zertifikat-Informationen in
X-
Header. Da HAProxy unterstützt auch diePROXY
Protokoll über die Konfiguration (etwas entlang der Linien vontcp-Verbindung anfordern erwarten-proxy
) ... so scheint es denkbar, dass Sie verwenden konnte, HAProxy hinter einer TCP-Modus ELB, mit HAProxy beenden der SSL-Verbindung und Weiterleitung beide die client-IP/port Informationen von ELB (über diePROXY
protocol) und das client-cert-Informationen für den application server... so dass Sie immer noch pflegen Sie die SSL-offload-Funktion.Ich erwähne dies, weil es scheint zu sein, eine Ergänzende Lösung, die vielleicht mehr Features als Plattform allein, und, zumindest in der 1.4, die beiden Produkte funktionieren einwandfrei zusammen -- ich bin mit HAProxy 1.4 hinter ELB erfolgreich für alle Anforderungen in meiner größten web-Plattform (in meinem Fall ELB ist die SSL-Verschiebung-es gibt keine client-certs) und es scheint zu sein, eine solide Kombination, die trotz der scheinbaren Redundanz der kaskadierten load balancers. Ich mag die ELB wird die einzige Sache gibt, auf das große böse Internet, aber ich habe keinen Grund zu denken, dass direkt ausgesetzt HAProxy problematisch sein würde, auf Ihre eigenen. In meiner Anwendung, die ELBs gibt es ein Gleichgewicht zwischen den HAProxies in der A/Z-s (das hatte ich ursprünglich auch die auto-Skalierung, aber die CPU-Auslastung blieb so gering ist, auch während unserer Hauptsaison, hatte ich nie mehr als eins pro Availability Zone, und ich habe nie verloren, aber trotzdem...), die können dann tun Sie etwas-Filterung, Weiterleitung und und munging der Header, bevor die Bereitstellung der traffic auf der eigentlichen Plattform zusätzlich zu geben Sie mir einige Protokollierung, umschreiben, und Verkehr-splitting Steuern, dass ich nicht mit ELB auf seine eigenen.
InformationsquelleAutor der Antwort Michael - sqlbot
Fall, dass Ihre back-end können die Unterstützung der client authentifizierte HTTPS-verbindungen selbst können Sie verwenden ELB als TCP auf port 443 TCP auf port Ihres back-end hört. Dadurch wird die ELB, nur um erneut unverschlüsselt auf Wunsch direkt an Ihre back-end. Diese config auch nicht erfordern die installation von SSL-Zertifikat, um einen load balancer ein.
Update: mit dieser Lösung " x-forwarded -* - Header nicht gesetzt.
InformationsquelleAutor der Antwort scrutari
Wechseln Sie zu einer einzigen Instanz auf Elastic Beanstalk, und verwenden Sie ebextensions zum hochladen der Zertifikate und Konfiguration von nginx für die gegenseitige TLS.
Beispiel
.ebextensions/setup.config
InformationsquelleAutor der Antwort Miguel Mota