Skocz do zawartości
mrowka

Problem z LetsEncrypt SSL dla jednego vhosta nginx

Polecane posty

Cześć,

 

mam domenę: "example.com" dodałem certyfikat SSL, chcę by strona była dostępna wyłącznie z adresu:

https://example.com

Czyli po wejściu np. na:

http://www.example.com

ma być przekierowanie na wcześniej wymienioną.

 

Wygląda to tak:

https://example.com - SSL działa, poprawna strona

http://example.com -> "https://example.com" - przekierowanie OK, SSL OK, strona OK
http://www.example.com -> https://example.com - przekierowanie OK, SSL OK, strona OK

https://www.example.com -> https://example.com - SSL nie działa, pokazuje błąd certyfikatu,
URL zostaje na https://www.example.com,
zła strona, wyświetla: "403 Forbidden / nginx/1.10.3 (Ubuntu)" zamiast tego co w "root /var/www/example.com/html;"

Plik vhost NGINX wygląda tak:

server {
	listen 80;
	listen [::]:80;

	root /var/www/example.com/html;

	index index.php index.html index.htm

	server_name example.com;

	location / {
		try_files $uri $uri/ =404;
	}

	location ~ \.php$ {
		include snippets/fastcgi-php.conf;
		fastcgi_pass unix:/run/php/php7.0-fpm.sock;
	}

	location ~ /\.ht {
		deny all;
	}

	listen 443 ssl; # managed by Certbot
	ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
	ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
	include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
	ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

	if ($scheme != "https") {
		return 301 https://$host$request_uri;
	} # managed by Certbot
}

server {
	listen 80;
	listen [::]:80;

	server_name www.example.com;
	return 301 https://example.com$request_uri;
}

Co powoduje błąd? Co trzeba poprawić?

Czy może powinienem wygenerować SSL też dla www.* / zostawić możliwość używania 2 wersji adresu?

 

Pozdrawiam. ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Wygeneruj sobie drugi SSL dla www.example.com i zrób przekierowanie na https://example.com.

 

 

A to:

server_name www.example.com;
return 301 https://example.com$request_uri;

nie powinno właśnie działać w ten sposób(przekierowanie) i pokazywać po przekierowaniu że SSL poprawny bo dla example.com taki właśnie jest?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

komenda:

openssl x509 -noout -text -in certyfikat.crt | grep DNS:

powinna zwrócić cośtakiego:

DNS:www.example.com, DNS:example.com

w przeciwnym wypadku (jeśli będzie brakowało DNS:www.example.com) będzie błąd certyfikatu.

 

W pierwszej kolejności następuje połączenie SSL/TLS a dopiero później przekierowania więc jeśli wpiszemy www.example.com a certyfikat mamy wygenerowany tylko na example.com to mamy błąd.

 

EDIT:

Dodatkowo dla vhosta www.example.com musisz mieć dodany certyfikat w konfiguracji - tak jak dla example.com

 

Najprościej będzie zrobić jak zasugerował @GieBe

Edytowano przez Jishnu (zobacz historię edycji)
  • Upvote 1

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Wygenerowałem certyfikaty dla wszystkich używanych domen:

sudo certbot --authenticator standalone --installer nginx --pre-hook "service nginx stop" --post-hook "service nginx start" --cert-name eka.ovh -d eka.ovh -d pma.eka.ovh -d jenkins.eka.ovh -d www.eka.ovh -d www.pma.eka.ovh -d www.jenkins.eka.ovh

Błędów związanych z certyfikatem nie ma, natomiast jest problem z przekierowaniem np.:

https://www.jenkins.eka.ovh -> https://jenkins.eka.ovh

Po wpisaniu adresu z www pokazuje webroot domeny eka.ovh. Tak samo nie działa przekierowanie:

https://www.eka.ovh -> https://eka.ovh

WWW jest cały czas w adresie URL.

Niżej konfiguracja vhosta jenkinsa:

server {
        listen 80;
        listen [::]:80;

        server_name jenkins.eka.ovh;

        access_log /var/log/nginx/jenkins.access.log;
        error_log /var/log/nginx/jenkins.error.log;

        location / {
                include /etc/nginx/proxy_params;
                proxy_pass          http://localhost:8090;
                proxy_read_timeout  90s;
        }

        location ~ /\.ht {
                deny all;
        }

        listen 443 ssl; # managed by Certbot
        ssl_certificate /etc/letsencrypt/live/eka.ovh/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/eka.ovh/privkey.pem; # managed by Certbot
        include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

        if ($scheme != "https") {
                return 301 https://$host$request_uri;
        } # managed by Certbot
}

server {
        listen 80;
        listen [::]:80;

        server_name www.jenkins.eka.ovh;
        return 301 https://jenkins.eka.ovh$request_uri;
}

Dzięki za dotychczasową pomoc ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Wygląda na to, że brakuje wpisów ssl dla vhostów z www.

Dla domeny ssl dla której nie ma wpisu wyświetlana jest pierwsza dostępna a tam nie ma ustawionego odpowiedniego przekierowania

 

Jest:

server {
        listen 80;
        listen [::]:80;

        server_name www.jenkins.eka.ovh;
        return 301 https://jenkins.eka.ovh$request_uri;
}

powinno być:

server {
        listen 80;
        listen [::]:80;

        listen 443 ssl; # managed by Certbot
        ssl_certificate /etc/letsencrypt/live/eka.ovh/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/eka.ovh/privkey.pem; # managed by Certbot
        include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot


        server_name www.jenkins.eka.ovh;
        return 301 https://jenkins.eka.ovh$request_uri;
}

i analogicznie dla drugiej domeny..

  • Upvote 1

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

@Jishnu dzięki, dodałem wpisy od SSL i rozwiązało to problem. ;)

Dzięki za pomoc! :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Zaloguj się, aby skomentować

Będziesz mógł dodać komentarz po zalogowaniu się



Zaloguj się

×