Skocz do zawartości


 

Zdjęcie

Problem z LetsEncrypt SSL dla jednego vhosta nginx

Problem z LetsEncrypt SSL dla jednego vhosta nginx

  • Proszę się zalogować aby odpowiedzieć
7 odpowiedzi na ten temat

Problem z LetsEncrypt SSL dla jednego vhosta nginx

#1 mrowka

mrowka

    Czasami na forum

  • Użytkownicy
  • 32 postów
  • Imię:Piotr

Napisany 05 luty 2018 - 16:40

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. ;)


  • 0

#2 GieBe

GieBe

    Nowy użytkownik

  • Użytkownicy
  • 6 postów

Napisany 05 luty 2018 - 17:51

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

 


  • 1

#3 mrowka

mrowka

    Czasami na forum

  • Użytkownicy
  • 32 postów
  • Imię:Piotr

Napisany 05 luty 2018 - 19:11

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?


  • 0

#4 Jishnu

Jishnu

    Czasami na forum

  • Użytkownicy
  • 38 postów

Napisany 05 luty 2018 - 19:35

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


Edytowany przez Jishnu, 05 luty 2018 - 19:47.

  • 1

#5 mrowka

mrowka

    Czasami na forum

  • Użytkownicy
  • 32 postów
  • Imię:Piotr

Napisany 05 luty 2018 - 20:28

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 ;)


  • 0

#6 Jishnu

Jishnu

    Czasami na forum

  • Użytkownicy
  • 38 postów

Napisany 05 luty 2018 - 21:41

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..


  • 2

#7 eska97

eska97

    Czasami na forum

  • Użytkownicy
  • 50 postów

Napisany 06 luty 2018 - 13:19

polecam https://gist.github....93d4dc115915de8


  • 0

#8 mrowka

mrowka

    Czasami na forum

  • Użytkownicy
  • 32 postów
  • Imię:Piotr

Napisany 06 luty 2018 - 20:19

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

Dzięki za pomoc! :)


  • 0





0 użytkowników czyta ten temat

0 użytkowników, 0 gości, 0 anonimowych użytkowników