kein "ssl_certificate" ist im Server definiert

kein "ssl_certificate" ist im Server definiert

Ich versuche, meinen Routine-Webserver einzurichten und stoße auf dieses Hindernis. Egal, was ich probiere, es funktioniert nicht. Das habe ich schon hunderte Male gemacht und mir gehen die Ideen aus.

Typisches Webserver-Setup, CentOS 8 mit einem auf PM2 laufenden Node-Prozess, Firewall-Eingabeaufforderung mit http, https und dem Port meiner App. Die App funktioniert einwandfrei beim Besuch von http://IP:Port.

Ich habe die Domäne auf den Server umgeleitet, bestätigt, dass sie auf den Server verweist, und das Problem wurde behoben.

Das Problem tritt auf, wenn Sie versuchen, nginx mit einem Let’s Encrypt-Zertifikat einzurichten. Beim Besuch der Domäne im Browser /var/log/nginx/error.logtritt der Fehler auf no "ssl_certificate" is defined in server listening on SSL port while SSL handshaking. Unten sind meine nginx-Konfigurationsdateien.

nginx.conf

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;
}

Datei default.conf

server {
  listen       80 default_server;
  listen       443 ssl default_server;
  listen       [::]:80 default_server;
  listen       [::]:443 ssl default_server;

  server_name  _;

  root          /var/www/;
  index index.html index.htm index.nginx-debian.html;

  include /etc/nginx/default.d/*.conf;

  location ~* \.(?:svgz?|ttf|ttc|otf|eot|woff2?)$ {
    add_header Access-Control-Allow-Origin "*";
    expires 7d;
    access_log off;
  }

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

  error_page 404 /404.html;
      location = /40x.html {
  }

  error_page 500 502 503 504 /50x.html;
      location = /50x.html {
  }

  #return 301 http://$host$request_uri;
}

meinewebsite.conf

server {
  server_name www.mywebsite.com;
  return 301 https://mywebsite.com;

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/mywebsite.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/mywebsite.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

}

server {
    if ($host = mywebsite.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


  listen 80;
  server_name mywebsite.com;
  return 301 https://$host$request_uri;


}

server {
  listen 443 ssl;
  server_name mywebsite.com;

  location / {
          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;
          proxy_pass              "http://127.0.0.1:3100";
          proxy_redirect http:// https://;
  }

    ssl_certificate /etc/letsencrypt/live/mywebsite.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/mywebsite.com/privkey.pem; # managed by Certbot
}
server {
    if ($host = www.mywebsite.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


  listen 80;
  server_name www.mywebsite.com;
    return 404; # managed by Certbot
}

Alle Dateien sind vorhanden, die Nginx-Konfiguration ist fehlerfrei. Irgendwelche Ideen? Lassen Sie es mich wissen, wenn Sie weitere Informationen benötigen.

Antwort1

Ihr virtueller Standardhost ist so konfiguriert, dass er sowohl IPv4 als auch IPv6 empfängt:

listen       80 default_server;
listen       443 ssl default_server;
listen       [::]:80 default_server;
listen       [::]:443 ssl default_server;

Ihre anderen virtuellen Hosts hören jedoch nur IPv4:

listen 443 ssl; # managed by Certbot
listen 80;
listen 443 ssl;
listen 80;

Da für den Standard-Vhost keine SSL-Schlüssel konfiguriert sind, gibt es bei einer Verbindung über IPv6 für nginx nichts zu verwenden.

Um das Problem zu beheben, fügen Sie Ihren anderen virtuellen Hosts Abhöranweisungen für IPv6 hinzu.

verwandte Informationen