Estoy trabajando en una aplicación web.
Mi aplicación se ejecuta en el subdominio app.mydomain.com
Necesito WhiteLabel mi aplicación. Estoy pidiendo a mis Clientes que apunten a su propio sitio web a través de CNAME a mi aplicación.
design.customerwebsite.com apunta a app.mydomain.com
Esto es lo que he intentado resolver.
Creé un nuevo archivo en /etc/nginx/sites-available llamado customerwebsite.com Agregué un enlace simbólico al archivo.
Instalé SSL usando certbot con el siguiente comando.
sudo certbot --nginx -n --redirect -d design.customerwebsite.com
Aquí está el código para mi archivo de configuración NGINX de customerwebsite.com
server { server_name www.customerwebsite.com; return 301 $scheme://customerwebsite.com$request_uri; } server { # proxy_hide_header X-Frame-Options; listen 80; listen 443; server_name design.customerwebsite.com; ssl_certificate /etc/letsencrypt/live/design.customerwebsite.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/design.customerwebsite.com/privkey.pem; root /opt/bitnami/apps/myapp/dist; location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_hide_header X-Frame-Options; proxy_pass http://localhost:3000; } proxy_set_header X-Forwarded-Proto $scheme; if ( $http_x_forwarded_proto != 'https' ) { return 301 https://$host$request_uri; } } Puedo ejecutar correctamente mi aplicación web en https://design.customerwebsite.com
Pero el certificado SSL muestra que apunta a app.mydomain.com y se muestra inseguro.
Mi app.mydomain.com tiene un certificado SSL de Amazon ACM que se adjunta a través de Load Balancer.
¿Cuál debería ser el enfoque para resolver esto?
Hay dos soluciones para esto 1: agregue los certificados ssl al equilibrio de carga: debe solicitar un certificado con todos los nombres de DNS admitidos (app.mydomain.com y design.customerwebsite.com)/ y debe administrar customerwebsite.com dominio con Route53. Creo que eso no es posible en tu caso.
2- No use ssl en el balanceador de carga: para esta opción, no terminaremos ssl en el balanceador de carga, sin embargo, se pasará a nginx para que lo maneje. Las configuraciones de su balanceador de carga deberían verse como
necesita generar un nuevo certificado SSL que incluya ambos dominios
sudo certbot --nginx -n --redirect -d app.mydomain.com -d *.mydomain.com -d design.customerwebsite.com -d *.customerwebsite.comConfiguraciones de Nginx
server { server_name www.customerwebsite.com; return 301 $scheme://customerwebsite.com$request_uri; } server { listen 80 default_server; server_name design.customerwebsite.com; return 301 https://$host$request_uri; } server { listen 443 ssl default_server; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_certificate /etc/letsencrypt/live/design.customerwebsite.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/design.customerwebsite.com/privkey.pem; server_name design.customerwebsite.com; root /opt/bitnami/apps/myapp/dist; location / { resolver 127.0.0.11 ipv6=off; proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto https proxy_set_header X-Real-IP $remote_addr; proxy_hide_header X-Frame-Options; proxy_pass http://localhost:3000; } }Creo que los elementos proporcionados al ACM Load Balancer deben coincidir con todos los dominios en los que puede recibir solicitudes. En el certificado, debe tener un Nombre alternativo del sujeto que contenga todos los dominios coincidentes.
Por ejemplo, en stackoverflow.com, el certificado tiene un CN *.stackexchange.com pero tiene ese Nombre alternativo del sujeto:
DNS:*.askubuntu.com, DNS:*.blogoverflow.com, DNS:*.mathoverflow.net, DNS:*.meta.stackexchange.com, DNS:*.meta.stackoverflow.com, DNS:*.serverfault.com, DNS:*.sstatic.net, DNS:*.stackexchange.com, DNS:*.stackoverflow.com, DNS:*.stackoverflow.email, DNS:*.superuser.com, DNS:askubuntu.com, DNS:blogoverflow.com, DNS:mathoverflow.net, DNS:openid.stackauth.com, DNS:serverfault.com, DNS:sstatic.net, DNS:stackapps.com, DNS:stackauth.com, DNS:stackexchange.com, DNS:stackoverflow.blog, DNS:stackoverflow.com, DNS:stackoverflow.email, DNS:stacksnippets.net, DNS:superuser.comte estás olvidando de algunos detalles... tienes que hacer una configuración para el dominio
/////// app.myDominio.com ////////
tal como lo hizo para el dominio normal y también cree SSL solo para este dominio. Puedes usar el script let. Configure una ruta para el REGISTRO DE NGINX para que pueda verificar los errores que detecta NGINX.
También puede usarlo en la configuración de NGINX * .domain.com (donde * significa aplicación, tal vez lo detecte)