no se define ningún "ssl_certificate" en el servidor

no se define ningún "ssl_certificate" en el servidor

Al intentar configurar mi servidor web de rutina y encontrarme con este obstáculo, no importa lo que intente, no funciona, algo que he hecho cientos de veces y me he quedado sin ideas.

Configuración típica de servidor web, centos 8 con un proceso de nodo ejecutándose en pm2, firewall-cmd con http, https y el puerto de mi aplicación, la aplicación funciona bien cuando visita http://ip:port.

Dirigí el dominio al servidor y confirmé que apunta al servidor y lo resolví.

El problema surge cuando al intentar configurar nginx con un certificado de cifrado, /var/log/nginx/error.logaparece el error no "ssl_certificate" is defined in server listening on SSL port while SSL handshakingal visitar el dominio en el navegador. A continuación se muestran mis archivos de configuración de nginx.

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

predeterminado.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;
}

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

Todos los archivos existen, la configuración de nginx no tiene errores. ¿Algunas ideas? Hágame saber si necesita más información.

Respuesta1

Su host virtual predeterminado está configurado para escuchar tanto IPv4 como IPv6:

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

Sin embargo, tus otros vhosts solo escuchan IPv4:

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

Dado que el vhost predeterminado no tiene ninguna clave SSL configurada, significa que cuando se conecta a través de IPv6, nginx no puede usar nada.

Para solucionar el problema, agregue directivas de escucha para IPv6 a sus otros hosts virtuales.

información relacionada