Nginx und Letsencrypt Zertifikate

iDome

Newbie
Registriert
März 2018
Beiträge
5
Hallo liebes Computerbase-Forum,
momentan versuche ich einen Webserver mittels "nginx" zu installieren und mit Letsencyrpt die nötigen SSL Zertifkate zu generieren.

Dabei bin ich nun auf das Problem gestoßen, dass ich nach Bearbeitung meiner nginx - Konfiguration keinen Zugriff mehr mit folgenden Browsern auf den Webserver habe:

  • Safari
  • Google Chrome
  • Internet Explorer
  • Microsoft EDGE
Safari gibt mir folgende Fehlermeldung aus: "Protokollfehler (NSPOSIXErrorDomain:100)"
Google Chrome: "ERR_SPDY_PROTOCOL_ERROR"
Internet Explorer und Microsoft EDGE: "Die Verbindung mit der Website wurde zurückgesetzt. INET_E_DOWNLOAD_FAILURE"

Mit Mozilla Firefox kann ich alles, ohne weitere Probleme, aufrufen.
(getestet auf mehreren Geräten und unabhängigen Netzwerken)

Die Konfiguration meines Nginx-Server sieht wie folgt aus:

/etc/nginx/conf.d/default_vhost.conf
Code:
server {
    listen 84;
    server_name 127.0.0.1;
 
    # Add headers to serve security related headers Use 
    # 'proxy_set_header' (not 'add_header') as the headers have to be 
    # passed through a proxy.
    proxy_set_header Strict-Transport-Security "max-age=15768000; 
    includeSubDomains; always;";
    proxy_set_header X-Content-Type-Options "nosniff; always;";
    proxy_set_header X-XSS-Protection "1; mode=block; always;";
    proxy_set_header X-Robots-Tag none;
    proxy_set_header X-Download-Options noopen;
    proxy_set_header X-Permitted-Cross-Domain-Policies none;
 
    # Path to the root of your installation
    root /var/www/html;
 
    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }
 
    location /.well-known/acme-challenge { }
}

/etc/nginx/conf.d/default_letsencrypt.conf
Code:
server {
	listen 127.0.0.1:83;
	server_name 127.0.0.1;	
	
	location ^~ /.well-known/acme-challenge {
		default_type text/plain;
		root /var/letsencrypt;
	}
}

/etc/nginx/sites-available/default
Code:
server {
	listen 80 default_server;
	server_name meine-domain.tld 192.169.178.129;
 
	root /var/www/html;
	
	location ^~ /.well-known/acme-challenge {
		proxy_pass http://127.0.0.1:83;
		proxy_redirect off;
	}
 
	location / {
		# Enforce HTTPS Use this if you always want to redirect 
		# to the DynDNS address (no local access).
		return 301 https://$server_name$request_uri;
		
		# Use this if you also want to access the server by 
		#local IP: return 301 https://$server_addr$request_uri;
    }		
}
 
server {
	listen 443 ssl http2;
	server_name meine-domain.tld 192.168.178.129;
 
	#
	# Configure SSL
	#
	ssl on;
  
	# Certificates used
	ssl_certificate /etc/letsencrypt/live/meine-domain.tld/fullchain.pem;
	ssl_certificate_key /etc/letsencrypt/live/meine-domain.tld/privkey.pem;
  
	# Not using TLSv1 will break:
	#	Android <= 4.4.40 IE <= 10 IE mobile <=10
	# Removing TLSv1.1 breaks nothing else!
	ssl_protocols TLSv1.2;
	
	# Using the recommended cipher suite from: 
	# https://wiki.mozilla.org/Security/Server_Side_TLS
	ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK';
  
	# Diffie-Hellman parameter for DHE ciphersuites, recommended 
	# 2048 bits ssl_dhparam /etc/nginx/ssl/dhparams.pem;
  
	# Specifies a curve for ECDHE ciphers. High security, but will 
	#not work with Chrome: ssl_ecdh_curve secp521r1;
	# Works with Windows (Mobile), but not with Android (DavDroid): 
	#ssl_ecdh_curve secp384r1;
	# Works with Android (DavDroid):
	ssl_ecdh_curve prime256v1;
 
	# Server should determine the ciphers, not the client
	ssl_prefer_server_ciphers on;
  
	# OCSP Stapling fetch OCSP records from URL in ssl_certificate 
	# and cache them
	ssl_stapling on;
	ssl_stapling_verify on;
	ssl_trusted_certificate 
        /etc/letsencrypt/live/meine-domain.tld/fullchain.pem;
	resolver 192.168.178.1;
  
	# SSL session handling
	ssl_session_timeout 24h;
	ssl_session_cache shared:SSL:50m;
	ssl_session_tickets off;
 
	#
	# Add headers to serve security related headers
	#  
	# HSTS (ngx_http_headers_module is required) In order to be 
	# recoginzed by SSL test, there must be an index.hmtl in the 
	# server's root
	add_header Strict-Transport-Security "max-age=63072000; 
        includeSubdomains" always;
	add_header X-Content-Type-Options "nosniff" always;
	# Usually this should be "DENY", but when hosting sites using 
	# frames, it has to be "SAMEORIGIN"
	add_header Referrer-Policy "same-origin" always;
	add_header X-XSS-Protection "1; mode=block" always;
	add_header X-Robots-Tag none;
	add_header X-Download-Options noopen;
	add_header X-Permitted-Cross-Domain-Policies none;
 
	location = / {}	
		
}

Kennt eventuell jemand den Ursprung des Problems?
Habe ich etwas bei der nginx-Konfiguration falsch gemacht?

Über jegliche Hilfe und Tipps würde ich mich sehr freuen.

Mit freundlichen Grüßen
iDome
 
Hancock schrieb:
Also ich hab folgende Befehle nicht drin:

​ssl_stapling_*
ssl_chiphers
​ssl_ecdh_*

​Bei mir funktioniert es mit Edge/Chrome/Firefox/Opera/IE.

​Gibt ne B-Note im SSL-Test.

Hallo Hancock,
bin meine Konfigurations-Dateien nochmal Schritt für Schritt durchgegangen und habe bemerkt, dass mein Editor einige kleine Formatierungsfehler verursacht hat.

Ein kleines Beispiel:
mit Formatierungsfehler:
Code:
ssl_trusted_certificate 
     /etc/letsencrypt/live/meine-domain.tld/fullchain.pem;

Überarbeitete Konfigurations-Datei:
Code:
ssl_trusted_certificate /etc/letsencrypt/live/meine-domain.tld/fullchain.pem;

Habe diese behoben und, siehe da, alles funktioniert!

Trotzdem vielen Dank für deine Hilfe!
 
Zurück
Oben