Ich habe überall gesucht, kann aber keine klare Lösung für die folgende Situation finden:
Wir haben eine Webanwendung (Grails + Spring Security), die in Tomcat, hinter Apache läuft. Teil der Anwendung muss unter https ausgeführt werden. Wenn Sie Spring Spring Security Channel Security verwenden, leitet Spring Sie bei jedem Navigieren zu einem sicheren Teil der Anwendung auf https mit dem Statuscode 302 um / p>
Tomcat ist nun eingerichtet, um über die https und Zertifikate Bescheid zu wissen, damit es weiß, wie es mit der ssl umgeht. In der Tat, wenn Apache durch direkt auf die URL und Port gehen, um Tomcat direkt zu treffen, funktioniert alles 100%.
Das Problem tritt nun auf, wenn Apache vor den Kater gestellt wird. Die Apache-Konfiguration, die wir im Moment haben, funktioniert gut für die nicht sicheren Teile der Anwendung. Wir verwenden mod_jk, um Apache und Tomcat zu proxy.
Sobald Sie jedoch versuchen, zu einem sicheren Teil der Anwendung zu gelangen, leitet Spring Sie um, es wird auf
treffen %Vor%Teil der Apache-Konfiguration ... und hier beginnt das Problem.
Nach dem, was ich gelesen habe, ist es möglich, Apache, über Mod_jk, die SSL-Behandlung an tomcat übergeben. Aber wir können nicht scheinen, dass die Konfiguration dafür korrekt ist. Da tomcat bereits für die ssl eingerichtet ist, weiß es, wo die Zertifikate sind, und Spring Security ist eingerichtet, wir möchten, dass tomcat alle ssl behandelt, und apache, nur um es an tomcat zu verpfänden.
Ist das überhaupt möglich, oder fehlt mir etwas? Hat jemand eine klare Anleitung, wie man das einrichtet? Jede Hilfe wird sehr geschätzt.
Wir verwenden Apache 2.2 und tomat 7.0.27
Danke
Sie können den SSL / TLS-Verkehr nicht einfach von Apache an Tomcat weiterleiten. Entweder endet Ihre SSL-Verbindung bei Apache, und dann sollten Sie den Datenverkehr an Tomcat weiterleiten (SSL ist in diesem Fall selten sinnvoll), oder Sie veranlassen die Clients, sich direkt mit Tomcat zu verbinden und die SSL-Verbindung zu behandeln.
Ich bin mir nicht sicher, wo Sie gelesen haben, dass mod_jk
die SSL-Verbindung selbst an Tomcat weitergeben kann. Es müsste den Socket direkt weiterleiten, also das von mod_jk
verwendete AJP-Protokoll umgehen (übrigens ist mod_proxy_ajp
der neue Weg oder sogar mod_proxy_http
).
Ich bin nicht sicher, warum Sie möchten, dass Apache vor Tomcat steht, wenn Sie möchten, dass Tomcat die SSL-Anfragen trotzdem behandelt. Wenn dies mit Port-Nummern oder etwas anderem zu tun hat, verwenden Sie eine Firewall-Regel, um Port 443 an den Tomcat-Port weiterzuleiten.
Seien Sie außerdem vorsichtig bei der Art und Weise, wie diese automatischen Umleitungen von HTTP zu HTTPS durchgeführt werden: sie treten erst nach der ersten HTTP-Anfrage auf gemacht worden .
Von Ihrem Beitrag kann ich nicht sagen, ob Sie ein Problem haben, während ssl zur Arbeit mit Apache kommt, oder ob, da Sie bestimmte Teile Ihrer App über http haben, Apache niemals über ssl umleitet. Beachten Sie, dass es vollkommen in Ordnung ist, mehrere "Segmente" über ssl zu haben (dh Benutzer - & gt; Apache über SSL und Apache - & gt; Tomcat über SSL).
1. Wenn das Problem, dass ssl funktioniert über Apache - müssen Sie sicherstellen, dass ssl korrekt auf dem Apache-Ende eingerichtet ist.
2. Wenn das Problem "redirect" ist, versuchen Sie separate URLs für http und https zu behalten. Wie /something.mysite.com/non_ssl/ und /something.mysite.com/ssl/. Dies wird es einfacher machen, die Regeln in Apache zu schreiben.
Tags und Links ssl grails tomcat apache spring-security