SSL Offloading voor Apache Tomcat

Vastgoedprojecten bekijken via verschillende user interfaces

Invantive Estate biedt meerdere user interfaces voor toegang tot dezelfde vastgoedgegevens in het real-time datawarehouse. Er is bijvoorbeeld een user interface binnen Microsoft Outlook waarmee je informatie over vastgoedprojecten kunt opvragen en bewerken. Maar ook een user interface vanuit Microsoft Excel voor het opstellen van kosten-batenanalyses over vastgoedprojecten in Invantive Estate. En zo is er ook een user interface voor andere systemen en voor Word en PowerPoint. De kosten-batenanalyses kun je dan bijvoorbeeld weer openen vanuit Word om er tekst bij te schrijven.

Mee-kijkers en het HTTP en HTTPS protocol

Met de webinterface kun je ook de gegevens van vastgoedprojecten bekijken en bewerken. Voor intern gebruik van de webinterface gebruikt men vaak het HTTP protocol; een URL ziet er dan als volgt uit: “https://invantive.com”. Maar voor beursgenoteerde ondernemingen en voor extern gebruik wordt het HTTPS protocol het meest gebruikt. Het HTTPS protocol heeft wat overhead, maar zorgt er wel voor dat mee-kijkers bij het gegevenstransport geen inzage krijgen in de gegevens. Een URL die het HTTPS protocol gebruikt is bijvoorbeeld “https://invantive.com”.

Om gegevens te kunnen beveiligen tegen mee-kijkers versleutelt de webserver de gegevens. De versleuteling werkt met zogenaamde “certificaten”. De versleuteling met certificaten berust op versleutelingsalgoritmes waarbij er openbare en geheime sleutels zijn die bij elkaar horen. Na een kort introductiegesprek tussen de webserver en de browser kunnen ze met deze sleutels samen een beveiligde verbinding opbouwen terwijl het tussenliggende netwerk niet veilig is. In dit introductiegesprek wordt - indien gewenst - gecontroleerd of ieder is wie hij zegt te zijn, zodat een overboeking naar de Triodos bank niet via een andere (kwaadwillende) website geleid wordt. En de twee partijen spreken een manier van beveiligd communiceren af die weinig rekentijd vergt.

Apache Tomcat en het HTTPS protocol

De webinterface gebruikt Apache Tomcat als webserver. Er zijn twee methodes waarmee je gemakkelijk het HTTPS protocol kunt ondersteunen:

  • Apache Tomcat SSL: Apache Tomcat zorgt voor de versleuteling en Apache Tomcat communiceert alleen in HTTPS naar buiten.

  • SSL Offloading: Een ander programma zit tussen Apache Tomcat en het Internet. Dit programma zorgt ervoor dat Apache Tomcat alleen HTTP gebruikt en de buitenwereld alleen via HTTPS kan communiceren met Apache Tomcat.

Voor beide methodes heb je een certificaat. Voor de eerste methode van HTPS met Apache Tomcat zijn op internet talrijke instructies te vinden. De tweede methode noemen we “SSL Offloading”. SSL Offloading heeft een aantal voordelen, maar vereist wat extra aandacht zowel van de applicatieleverancier als van beheerder die het inregelt. De voordelen van SSL Offloading ten opzichte van SSL met Apache Tomcat zijn:

  • Meer gebruikers ondersteunen: je haalt een rekenintensieve standaardtaak weghalen bij Apache Tomcat waardoor de Tomcat server meer transacties kan verwerken.

  • Opschalen: in combinatie met een HTTP proxy kun je talrijke Apache Tomcat installaties combineren tot een grote website. Het maakt niet uit of je veel verschillende versies tegelijk draait of andere versies van Java; alles is bereikbaar via één webserver.

  • Minder installatiewerk: de installatie van een certificaat per Apache Tomcat omgeving vervalt. Maar niet helemaal. Lees daarom verder.

  • Lagere kosten: je kunt met een certificaat voor een enkel domein talrijke omgevingen beveiligen. Een wildcard certificaat of meerdere certificaten voor losse servers zijn aanmerkelijk duurder.

Hoe Implementeer ik SSL Offloading met Apache Tomcat

Voor de implementatie van SSL Offloading kun je verschillende programma’s of apparaten gebruiken. Bijvoorbeeld de Apache HTTP webserver die op Windows en UNIX draait. Een ander alternatief is AWS CloudFront. Daarnaast heb je Apache Tomcat nodig. Ik ga er van uit dat Invantive Estate webuser interface al via HTTP bereikbaar is op de Apache Tomcat server.

Apache HTTP webserver

Om Apache HTTP voor SSL offloading te kunnen gebruiken, dien je eerst een certificaat hiervoor aan te vragen. Daarna kun je het certificaat gebruiken om via HTTPS gegevens te versturen. Je kunt ook een zogenaamd “self-signed” certificaat gebruiken. Voor testdoeleinden voldoet dit, maar voor meer gebruiksgemak en een stukje extra zekerheid kun je beter een certificaat laten ondertekenen door een externe partij.

Een voorbeeld van een configuratie voor de Apache webserver is:

 ServerAdmin sysadmin-acme@acme.com
 #
 # Externe naam van de Apache webserver.
 #
 ServerName apps.acme.com
 #
 # HTTPS configuratie.
 #
 SSLEngine on
 SSLProtocol -ALL +SSLv3 +TLSv1
 SSLCipherSuite ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM
 SSLCertificateFile /etc/apache243/conf/ssl/apps_acme_com.crt
 SSLCertificateKeyFile /etc/apache243/conf/ssl/apps_acme_com.key
 SSLCertificateChainFile /etc/apache243/conf/ssl/AddTrustExternalCARoot.crt
 SSLCertificateChainFile /etc/apache243/conf/ssl/COMODOHigh-AssuranceSecureServerCA.crt
 #
 # Wat handige instellingen.
 #
 ProxyRequests Off
 ProxyPreserveHost On
 AddDefaultCharset utf-8
 HostnameLookups off
 UseCanonicalName off
 ProxyBadHeader Ignore
 KeepAlive off
 #
 # Bijhouden wie wat opvraagt voor bezoekersanalyse.
 #
 ErrorLog /var/log/ws453/apache243/apps.acme.com/error_log
 CustomLog /var/log/ws453/apache243/apps.acme.com/access_log combined
 #
 # HTTPS verzoeken naar .../invantive-estate/production worden doorgestuurd naar de
 # Apache Tomcat server die draait op de server met IP adres 10.1.2.3 op poort 14593.
 #
 # En vice versa.
 #
 ProxyPass /invantive-estate/production http://10.1.2.3:14593/invantive-estate/production retry=3
 ProxyPassReverse /invantive-estate/production qbubs http://10.1.2.3:14593/invantive-estate/production
 #
 # ... Ruimte voor andere instellingen.
 #

Apache Tomcat SSL Offloading

De Apache Tomcat server en applicatie weten in dit geval niet dat ze voor de buitenwereld benaderd worden via HTTPS. De Apache webserver zorgt er voor dat een verzoek vanuit de browser om de URL https://.../invantive-estate/production/projecten binnenkomt bij Apache Tomcat als http://.../invantive-estate/production/projecten. Het kan daarom gebeuren dat een webpagina zich anders gedraagt dan verwacht. In Invantive Estate is hiermee al rekening gehouden in de programmatuur. Soms zal de Tomcat webserver zelf URL-s samenstellen, namelijk voor een HttpServletResponse.sendRedirect. Daarom moet je een aantal instellingen opnemen in de Apache Tomcat configuratie om SSL Offloading goed te laten werken. De Apache Tomcat configuratie is standaard te vinden in het bestand server.xml in de conf map:

protocol="HTTP/1.1"
connectionTimeout="20000"
compression="on"
compressionMinSize="32"
noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml,text/javascript,application/x-javascript,text/css"
redirectPort="8443"
URIEncoding="UTF-8"
proxyPort="443"
proxyName="www.invantive.com"
scheme="https"
secure="true"

De belangrijkste attributen van de Connector instelling om SSL Offloading goed te laten werken zijn:

  • proxyName: de naam van de website waarlangs gebruikers Invantive Estate benaderen via SSL.

  • proxyPort: de poort waarlangs dit gebeurt (443 is de standaard poort voor HTTPS).

  • scheme: het protocol dat gesproken wordt (“http” of “https”).

  • secure: is het een beveiligde verbinding?

Apache Tomcat blijft wisselen tussen het HTTP en HTTPS protocol

Een veel voorkomend probleem bij het gebruik van SSL Offloading kenmerkt zich er door dat gebruikers telkens een foutmelding krijgen omdat het protocol wijzigt van HTTPS in HTTP. Je drukt bijvoorbeeld op de “Zoeken” knop in het projecten scherm en vervolgens krijg je een HTTP 404 foutmelding (pagina niet gevonden). Als dit zich voordoet, controleer dan:

  • Heb je een connector in Apache Tomcat met de juiste instellingen?

  • Gebruik je het poortnummer van deze connector ook in je proxy configuratie of heb je per abuis een andere connector van dezelfde Apache Tomcat installatie gebruikt?

Samenvatting

Met deze instructies kun je gemakkelijk de webuser interface van talrijke Invantive Estate installaties beschikbaar stellen via HTTPS. Bovendien kun je gemakkelijker en goedkoper opschalen naar nog hogere aantallen installaties en hogere aantallen gebruikers.