El certificado de Discobot y hijack.rb están en un bar

…y web.socketed.template entra :grin:

Esta me tiene desconcertado… tengo un discourse https aparentemente perfecto, excepto por certificate.svg que no carga. (error 500, no es un bug, estoy seguro de que es mi configuración :sob:)

  • Uso web.socketed.template y manejo SSL fuera del contenedor (por lo tanto, web.ssl.template sigue comentado en app.yml)
  • El log de rails dice: Failed to process hijacked response correctly : Failed to open TCP connection to my.domain:443 (Connection refused - connect(2) for "my.domain" port 443)

Entré al contenedor para ver qué hay en /etc/nginx/conf.d/discourse.conf; como esperaba, no vi ningún bloque https (que habría aparecido si web.ssl.template estuviera habilitado, creo).

¿Es posible que esta parte de web.socketed.template:

 - replace:
  filename: "/etc/nginx/conf.d/discourse.conf"
  from: /listen 443 ssl http2;/
  to: |
    listen unix:/shared/nginx.https.sock ssl http2;
    set_real_ip_from unix:;

no se haya aplicado porque web.ssl.template no está habilitado y, de alguna manera, eso hace que el “hijack” falle?

Pero, ¿por qué solo para el certificado de discobot? ¿No se usa mucho el “hijack”, como para oneboxing? Arg… estoy en los límites de mis conocimientos, me duele la cabeza :sweat_smile:

ps. el fragmento ssl

ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:1m;
ssl_session_tickets off;

ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;
add_header Strict-Transport-Security 'max-age=31536000';

y el bloque nginx

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name my.domain;

    ssl on;
    ssl_certificate /etc/letsencrypt/live/my.domain/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/my.domain/privkey.pem;
    include /etc/nginx/snippets/ssl.conf;

    client_max_body_size 0;

    http2_idle_timeout 5m; 

    location / {
        proxy_pass http://unix:/var/discourse/shared/standalone/nginx.http.sock:;
        proxy_set_header Host $http_host;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
    }
}