dkuehlborn
Goto Top

NGINX Reverse Proxy mit Exchange 2016 und Outlook 2016

Hallo Forum,

ich befasse mich gerade mit dem Thema Reverse-Proxy für Exchange 2016 unter Ubuntu mit NQINX.
Wenn ich meine Konfiguration aktiviere, dann kommt bei Outlook 2016 (Outlook Anywhere) immer die Kennwortabfrage. Eine Verbindung zum Exchange-Server kommt nicht zustande.
Outlook Web Access läuft dagegen ohne Probleme.

Im Zertifikat (StartSSL) stehen die folgenden Eintragungen:
mail.domain.de
autodiscover.domain.de

Im Exchange sind alle Zugriffe (intern und extern) auf die folgenden Domains eingerichtet
https://mail.domain.de
https://autodiscover.domain.de

Die Anpassung des DNS-Server ist so eingerichtet, dass intern der lokale Mail-Server gezeigt wird und von extern auf meine öffentliche IP-Adresse verweisen wird.

Im Linux-Server (Ubuntu Server 16.04 LTS) habe ich NGINX und NGINX-Extras installiert.

Im wesentlichen habe ich mich an die Anleitungen von blog.freidlandreas.net (https://blog.friedlandreas.net/2013/07/reverseproxy-fur-eas-exchange-act ...) und https://blog.friedlandreas.net/2016/05/nginx-reverseproxy-fuer-mapi-over ..) gehalten.

Für EWS und OAB habe ich am Exchange-Server im IIS die Standardauthentifizierung aktiviert.

Die Konfiguration vom Reverse-Proxy sieht wie folgt aus:

#Abschnitt 1
server {
        listen       80;
        server_name mail.domain.de autodiscover.domain.de;
 
        # Redirect any HTTP request to HTTPS
        return 301 https://$server_name$request_uri;
 
        error_log  /var/log/nginx/exchange-error.log;
        access_log /var/log/nginx/exchange-access.log;
}
 
#Abschnitt 2
server {
        listen       443;
        server_name mail.domain.de autodiscover.domain.de;
 
        # Enable SSL
        ssl                     on;
        ssl_certificate         /etc/nginx/certs/exchange2016-2016-10-31-startssl.pem;
        ssl_certificate_key     /etc/nginx/certs/exchange2016-2016-10-31-startssl.key;
        ssl_session_timeout     5m;
 
        # Set global proxy settings
        proxy_read_timeout      360;
 
        proxy_http_version 1.1;
        proxy_pass_request_headers on;
 
        proxy_pass_header       Date;
        proxy_pass_header       Server;
 
        proxy_set_header        Host $host;
        proxy_set_header        X-Real-IP $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header        Accept-Encoding "";  
 
        more_set_input_headers 'Authorization: $http_authorization';  
        proxy_set_header Accept-Encoding "";  
        more_set_headers -s 401 'WWW-Authenticate: Basic realm="mail.domain.de"';  
 
        location /owa           { proxy_pass https://mail.domain.de/owa; }
        location /EWS           { proxy_pass https://mail.domain.de/EWS; }
        location /Microsoft-Server-ActiveSync { proxy_pass https://mail.domain.de/Microsoft-Server-ActiveSync; }
        location /mapi          { proxy_pass https://mail.domain.de/mapi; }
        location /rpc           { proxy_pass https://mail.domain.de/Rpc; }
        location /OAB           { proxy_pass https://mail.domain.de/OAB; }
        location /autodiscover  { proxy_pass https://mail.domain.de/autodiscover; }
        location /Autodiscover  { proxy_pass https://mail.domain.de/Autodiscover; }
 
        error_log /var/log/nginx/exchange-ssl-error.log;
        access_log /var/log/nginx/exchange-ssl-access.log;
}

Habe ich etwas übersehen?

Danke für Ideen und Vorschläge.

VG Dieter

Content-Key: 319620

Url: https://administrator.de/contentid/319620

Printed on: April 16, 2024 at 04:04 o'clock

Member: Dani
Dani Oct 31, 2016 at 14:28:25 (UTC)
Goto Top
Hallo Dieter,
halte dich erstmal an diesen Thread. Dort hat am Ende alles wie gewünscht funktioniert.


Gruß,
Dani
Member: Dkuehlborn
Dkuehlborn Oct 31, 2016 at 22:31:32 (UTC)
Goto Top
Hallo Dani,

danke für deine Rückmeldung.
Anhand der Konfig im verlinkten Thread habe ich meine Konfig wie folgt angepasst.

server {
   listen 443 ssl;
   server_name               mail.domain.de;
   ssl_certificate           /etc/nginx/certs/exchange2016-2016-10-31-startssl.pem;
   ssl_certificate_key       /etc/nginx/certs/Exchange2016-2016-10-31-startssl.key;
   access_log                /var/log/nginx/mydomain.access.log  combined;
   error_log                 /var/log/nginx/mydomain.error.log;
   client_max_body_size      3G;
   proxy_request_buffering   off;
   ssl_session_timeout       5m;
   tcp_nodelay on;
     proxy_http_version      1.1;
     proxy_read_timeout      360;
     proxy_pass_header       Date;
     proxy_pass_header       Server;
     proxy_pass_header       Authorization;
     proxy_set_header        Host $host;
     proxy_set_header        X-Real-IP $remote_addr;
     proxy_set_header        X-Forwarded-For  $proxy_add_x_forwarded_for;
     proxy_pass_request_headers on;
     more_set_input_headers  'Authorization: $http_authorization';  
     proxy_set_header Accept-Encoding "";  
     more_set_headers -s 401 'WWW-Authenticate: Basic realm="mail.domain.de"';  
     proxy_buffering off;
     proxy_set_header Connection "Keep-Alive";  
   location / {
   return 301 https://mail.domain.de;
   }
   location ~* ^/owa { proxy_pass https://mail.domain.de; }
   location ~* ^/Microsoft-Server-ActiveSync { proxy_pass https://mail.domain.de; }
   location ~* ^/ecp { proxy_pass https://mail.domain.de; }
   location ~* ^/rpc { proxy_pass https://mail.domain.de; }
 }
 # redirect all http traffic to https
 server {
   listen 80;
   server_name mail.domain.de;
   return 301 https://$host$request_uri;
 }

Leider habe ich das fast das gleiche Problem wie vorher.

Der einzige Unterschied ist der, dass Outlook 2016 lange braucht, um nach dem Passwort zu fragen.

Im verlinkten Thread ist ebenfalls eine geänderte Konfig enthalten. Auch diese läuft nicht.

Gibt es eine universell laufende Möglichkeit für einen Reverse-Proxy?

VG Dieter
Member: Dani
Dani Nov 01, 2016 at 09:38:54 (UTC)
Goto Top
Moin Dieter,
Im verlinkten Thread ist ebenfalls eine geänderte Konfig enthalten. Auch diese läuft nicht.
du hast die Konfiguration aus dem letzten Kommentar entnommen? Denn dort ist der Fehler nicht mehr aufgetreten.

Gibt es eine universell laufende Möglichkeit für einen Reverse-Proxy?
Bestimmt. Mit Nginx ist meiner Meinung oft Try & Error angesagt. Wir nutzen inzwischen Microsoft Web Application Proxy, weil dieser nicht nur für Exchange sondern auch andere Services veröffentlicht und authentifiziert.

Gruß,
Dani
Member: Dkuehlborn
Dkuehlborn Nov 01, 2016 at 12:06:42 (UTC)
Goto Top
Hallo Dani,

die Konfiguration im letzten Kommentar bezieht sich hauptsächlich auf die Zeile "Proxy_pass https://mail.domain.de;;.

Diese hatte ich auch mal eingetragen. Ich hatte auch die gesamte Konfig übernommen. Leider ohne den gewünschten Erfolg.

Mein Ziel war es eine Lösung auf meinem Testsystem zu finden, die ich bei mir im Produktivsystem übernehmen kann und auch bei meinen Kunden zum Einsatz bringen kann. Eine Lösung, die auf der Basis "Try & Error" läuft kann ich nicht mit ruhigem Gewissen beim Kunden einsetzen.

Ich werde mal den WAP von Windows testen. Danke für den Hinweis.

VG Dieter
Member: Dani
Dani Nov 01, 2016 updated at 12:46:41 (UTC)
Goto Top
Moin,
Für EWS und OAB habe ich am Exchange-Server im IIS die Standardauthentifizierung aktiviert.
würde ich wieder auf den Ursprungskonfiguration abändern.

Diese hatte ich auch mal eingetragen. Ich hatte auch die gesamte Konfig übernommen. Leider ohne den gewünschten Erfolg.
Hast du danach mal einen Microsoft Remote Connectivity Analyzer durchgeführt, um zu sehen wo es hängt? Autodiscover funktioniert vollumfänglich von extern?

Ich werde mal den WAP von Windows testen. Danke für den Hinweis.
bevor du dich ins Unglück stürzt, für WAP ist ADFS erforderlich. Das ist kein Selbstläufer, sondern kann dich je nach Anforderungen und Umsetzung in den Wahnsinn treiben.


Gruß,
Dani
Member: Dkuehlborn
Dkuehlborn Nov 01, 2016 at 12:43:58 (UTC)
Goto Top
Hi Dani,

ich bin gerade am Recherchieren und hatte dabei die Frage, ob ADFS zwingend Voraussetzung ist. Diese Frage hast du mir schon mal beantwortet.
Vielen Dank.

VG Dieter
Member: Dani
Dani Nov 01, 2016 at 12:47:19 (UTC)
Goto Top
Moin,
Für EWS und OAB habe ich am Exchange-Server im IIS die Standardauthentifizierung aktiviert.
würde ich wieder auf den Ursprungskonfiguration abändern.

Diese hatte ich auch mal eingetragen. Ich hatte auch die gesamte Konfig übernommen. Leider ohne den gewünschten Erfolg.
Hast du danach mal einen Microsoft Remote Connectivity Analyzer durchgeführt, um zu sehen wo es hängt? Autodiscover funktioniert vollumfänglich von extern?


Gruß,
Dani
Member: Dkuehlborn
Dkuehlborn Nov 01, 2016 at 12:57:58 (UTC)
Goto Top
Hi Dani,

mit der ersten Konfiguration konnte ich den MRCA erfolgreich laufen lassen. Es gab ledig eine Warnung bzgl. meines StartSSL-Zertifikates und der Prüfung der CA. Bei den verschiedenen Tests hatte ich zum Teil keine Verbindung zum Netzwerk mittels MRCA.

Der Zugriff auf Autodiscover, OWA und Outlook Anywhere funktioniert ohne Probleme, wenn ich am Router HTTPS direkt zum Exchange-Server leite.

VG Dieter
Member: Dani
Dani Nov 01, 2016 at 13:00:54 (UTC)
Goto Top
Es gab ledig eine Warnung bzgl. meines StartSSL-Zertifikates und der Prüfung der CA.
Das Problem holt dich später noch ein. Hat mit diesem aber nichts zu tun.

Der Zugriff auf Autodiscover, OWA und Outlook Anywhere funktioniert ohne Probleme, wenn ich am Router HTTPS direkt zum Exchange-Server leite.
Das sind schon mal 50%. face-smile Wie sieht das Ergebnis mit Nginx aus?


Gruß,
Dani
Member: Dkuehlborn
Dkuehlborn Nov 01, 2016 at 13:26:07 (UTC)
Goto Top
Das Problem holt dich später noch ein. Hat mit diesem aber nichts zu tun.
Ich denke du hast Recht. Ich habe gerade gelesen, dass StartCom (Betreiber von StartSSL) bei Google und Mozilla gesperrt wird. Ich muss mir wohl ein anderes Zertifikat holen. Mal sehen wo ich günstig ein Zertifikat erhalten kann.

Das sind schon mal 50%. face-smile Wie sieht das Ergebnis mit Nginx aus?
Mit meiner ersten Konfig (Eingangspost) hatte ich das gleiche Ergebnis im MRCA. Owa von extern hat funktioniert. Outlook mit Outlook Anywhere fragte nach Kennwort und baute keine Verbindung auf.

VG Dieter
Member: Dani
Dani Nov 01, 2016 at 13:38:43 (UTC)
Goto Top
Moin,
welche Authentifizierungsmethode wird für Outlook Anywhere genutzt? NTLM oder Basic.


Gruß,
Dani
Member: Dkuehlborn
Dkuehlborn Nov 01, 2016 at 16:08:43 (UTC)
Goto Top
Hi Dani,

das kann ich nicht eindeutig beantworten. Im Outlook 2016 werden diese Informationen nicht mehr angezeigt.
Im Outlook-Verbindungsstatus wird eine Verbindung über Mapi over HTTPS und Authentifizierung Nego* angezeigt.

Am Exchange-Server steht alles auf Standard (d.h. Windows-Authentifizierung ist aktiviert). Die Standardauthentifizierungen habe ich wieder deaktiviert.

Ich habe ein neues Zertifikat bei einem anderen Anbieter beantragt und werde dieses sobald es verfügbar ist bei mir aktivieren. Dann sollte ich MRCA ohne Fehler zum Laufen bringen. Danach werde ich meine Ausgangskonfig in NGINX wieder aktivieren und erneute Tests ausführen.

Sobald ich neue Infos habe, gebe ich Bescheid.

VG Dieter
Member: Dkuehlborn
Dkuehlborn Nov 04, 2016 updated at 00:47:06 (UTC)
Goto Top
Hallo Dani,

nun habe ich mein SSL-Zertifikat getauscht und ein Wildcard-Zertifikat von Geotrust.
Wenn ich den MRCA aufrufe, dann erhalte ich beim direkten Zugriff (Router leitet https zum Exchange-Server) die gleiche Ausgabe, wie beim Einsatz vom Proxy (Router leitet https zum Exchange-Server).
Selbstredend verwenden Exchange-Server und Prxy das selbe Zertifikat.
Meine Konfig ist wieder die Ausgangskonfig und zeigt wieder die gleichen Fehler, d.h. OWA geht, Outlook Anywhere mit Outlook 2016 geht nicht.

Über www.ssllabs.com/ssltest/index.html habe ich mal einen Test laufen lassen. Hier treten Unterschiede auf.

Auszug aus dem Testprotokoll beim direkten Zugriff:


Auszug aus dem Testprotokoll beim direkten Zugriff:


Ich gehe daher davon aus, dass beim Zugriff auf das Zertifikat bei Outlook Anywhere irgend welche Fehler auftreten.

Hast Du noch weitere Ideen?

VG Dieter
ssltest-direct-forum
ssltest-proxy-forum
Member: Dani
Dani Nov 12, 2016 at 14:44:37 (UTC)
Goto Top
Moin,
Ich gehe daher davon aus, dass beim Zugriff auf das Zertifikat bei Outlook Anywhere irgend welche Fehler auftreten.
wenn das so wäre, würde eigentlich eine Sicherheitswarnung am Client angezeigt.

Bei den verschiedenen Tests hatte ich zum Teil keine Verbindung zum Netzwerk mittels MRCA.
Kannst du mal das Ergebnis von MRCA posten?

Hast du den Exchange Server mal neugestartet? Hat bei uns während der Migration seltsame Phänomen gelöst.


Gruß,
Dani
Member: Dkuehlborn
Dkuehlborn Nov 12, 2016 at 16:10:17 (UTC)
Goto Top
Hallo Dani,

danke für deine Rückmeldung.
In Outlook und OWA erhalte ich keine Fehlermeldungen bzgl. Zertifikat.
In welcher Form soll ich das Testergebnis posten? Als XML oder HTML oder PN?

VG Dieter
Member: Dani
Dani Nov 15, 2016 at 18:19:05 (UTC)
Goto Top
Moin,
In welcher Form soll ich das Testergebnis posten? Als XML oder HTML oder PN?
als Screenshot reicht mir.


Gruß,
Dani