sslab_a.PNG
so fertig der DH 4096 key ist generiert und eingebunden.
Nachfolgend meine SSL Konfiguration.
Wer sie benutzt sollte wissen was er tut. Die Konfiguration ist für nginx Reverse Proxy und auf meine Clients abgestimmt und nicht für öffentliche Webserver geeignet.
nginx.config
Konfiguration für Smartvisu und Alexa
Smartvisu getestet mit Windows 10, Chrome, Firefox, Edge, IE in den aktuellen Versionen.
Die SmartVISU für den Reverse Proxy funktioniert nicht mit IOS was aber nichts mit der nginx Konfiguration zu tun hat.
vhost für visu und alexa
Nachfolgend die Konfiguration für Exchange getestet mit Version 2013 und 2016
vhost für owa, active sync und outlook web access
so fertig der DH 4096 key ist generiert und eingebunden.
Nachfolgend meine SSL Konfiguration.
Wer sie benutzt sollte wissen was er tut. Die Konfiguration ist für nginx Reverse Proxy und auf meine Clients abgestimmt und nicht für öffentliche Webserver geeignet.
nginx.config
Code:
user www-data; worker_processes 2; pid /run/nginx.pid; events { worker_connections 768; # multi_accept on; } http { ## #Basic Settings ## sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; server_tokens off; client_max_body_size 2000M; server_names_hash_bucket_size 64; # server_name_in_redirect off; include /etc/nginx/mime.types; default_type application/octet-stream; ## #SSL Settings ## ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; ssl_protocols TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers AES256+EECDH:AES256+EDH:!aNULL; ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/private/dhparam.pem; ssl_ecdh_curve secp384r1; add_header Strict-Transport-Security "max-age=31536000; includeSubdomains" always; add_header X-Frame-Options DENY; add_header X-Content-Type-Options nosniff; ## #Logging Settings ## access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; ## #Gzip Settings ## gzip on; gzip_disable "msie6"; gzip_min_length 1100; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; ## #Virtual Host Configs ## include /etc/nginx/sites-enabled/*; ## #DDOS ## client_header_timeout 10; client_body_timeout 10; }
Smartvisu getestet mit Windows 10, Chrome, Firefox, Edge, IE in den aktuellen Versionen.
Die SmartVISU für den Reverse Proxy funktioniert nicht mit IOS was aber nichts mit der nginx Konfiguration zu tun hat.
vhost für visu und alexa
Code:
# SSL-Redirect & LetsEncrypt Endpoint server { listen 80 default_server; root /var/www/html; index index.html; # location / { # return 301 https://$host$request_uri; # } # LetsEncrypt Endpoint location /.well-known { alias /var/www/html/.well-known; allow all; } } server { server_tokens off; listen 443 ssl ; server_name visu.domainA.de; # gzip should not be used with ssl gzip off; ## # SSL # Global SSL in nginx.conf ## ssl on; ssl_certificate /etc/letsencrypt/live/visu.domainA.de/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/visu.domainA.de/privkey.pem; ## # global ## root /var/www/html; index index.php index.htm index.html; access_log /var/log/nginx/visu.log combined; # Weiterleitung zu SmartHomeNG (Websocket Schnittstelle) mit Basic Auth location / { auth_basic "Restricted Area: smartVISU"; auth_basic_user_file /etc/nginx/.smartvisu; # Nur Websocket Verbindungen gegen "/" durchlassen! if ($http_upgrade = websocket) { proxy_pass http://10.x.x.20:2424; } if ($http_upgrade != websocket) { return 403; } } # Zugriff auf die SmartVISU mit Basic Auth location /smartVISU { auth_basic "Restricted Area: smartVISU"; auth_basic_user_file /etc/nginx/.smartvisu; proxy_pass http://10.x.x.20/smartVISU; 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 X-Forwarded-Proto $scheme; } # Network Plugin Weiterleitung location /shng { auth_basic "Restricted Area: SmartHomeNG"; auth_basic_user_file /etc/nginx/.shng; proxy_pass http://10.x.x.20:8383/; 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 X-Forwarded-Proto $scheme; } # location /.well-known { # alias /var/www/html/.well-known; # allow all; # } } # Alexa server { server_tokens off; listen 444 ssl; server_name alexa.domainA.de; # gzip should not be used with ssl gzip off; ## # SSL # Global SSL in nginx.conf ## ssl on; ssl_certificate /etc/letsencrypt/live/alexa.domainA.de/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/alexa.domainA.de/privkey.pem; # maintain the .well-known directory alias for letsencrypt & renewals location /.well-known { auth_basic off; alias /var/www/html/.well-known; } access_log /var/log/nginx/alexa.log combined; auth_basic "Alexa"; auth_basic_user_file /etc/nginx/htpasswd; location / { proxy_pass http://10.x.x.20:9000/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
vhost für owa, active sync und outlook web access
Code:
#Abschnitt 1 server { listen 80; server_name owa.domainB.de autodiscover.domainB.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 { server_tokens off; listen 443; # gzip should not be used with ssl gzip off; server_name owa.domainB..de autodiscover.domainB.de; ssl on; ssl_certificate /etc/letsencrypt/live/owa.domainB.de/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/owa.domainB.de/privkey.pem; # 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="host-intern.domainB.de"'; location /owa { proxy_pass https://host-intern.domainB.de/owa; } location /OWA { proxy_pass https://host-intern.domainB.de/owa; } location /EWS { proxy_pass https://host-intern.domainB.de/EWS; } location /ews { proxy_pass https://host-intern.domainB.de/EWS; } location /Microsoft-Server-ActiveSync { proxy_pass https://host-intern.domainB.de/Microsoft-Server-ActiveSync; } location /mapi { proxy_pass https://host-intern.domainB.de/mapi; } location /MAPI { proxy_pass https://host-intern.domainB.de/mapi; } location /rpc { proxy_pass https://host-intern.domainB.de/Rpc; } location /RPC { proxy_pass https://host-intern.domainB.de/Rpc; } location /oab { proxy_pass https://host-intern.domainB.de/OAB; } location /OAB { proxy_pass https://host-intern.domainB.de/OAB; } location /autodiscover { proxy_pass https://host-intern.domainB.de/Autodiscover; } location /Autodiscover { proxy_pass https://host-intern.domainB.de/Autodiscover; } error_log /var/log/nginx/exchange-ssl-error.log; access_log /var/log/nginx/exchange-ssl-access.log; }
Kommentar