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 2

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

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się


×