如何处理 SSL 证书以在 NGINX 服务器上的 Web 应用 运行 中实施 WhiteLabel 选项
How to handle SSL certificates for implementing WhiteLabel option in a web app running on NGINX server
我正在开发 Web 应用程序。
我的应用 运行 在子域 app.mydomain.com
上
我需要为我的应用程序添加白标。我要求我的客户通过 CNAME 将他们自己的网站指向我的应用程序。
design.customerwebsite.com
指向app.mydomain.com
这是我试图解决的问题。
我在 /etc/nginx/sites-available
中创建了一个名为 customerwebsite.com
的新文件
向文件添加了符号链接。
我使用 certbot
通过以下命令安装了 SSL。
sudo certbot --nginx -n --redirect -d design.customerwebsite.com
这是我 customerwebsite.com
的 NGINX conf 文件的代码
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;
}
}
我成功地 运行 我的网络应用 https://design.customerwebsite.com
但是SSL证书显示指向app.mydomain.com
,显示不安全。
我的 app.mydomain.com
有来自 Amazon ACM 的 SSL 证书,该证书通过负载均衡器附加。
解决这个问题的方法是什么?
我认为提供给 ACM 负载均衡器的元素必须匹配您可能接收请求的每个域。在证书中,您应该有一个包含每个匹配域的主题备用名称。
例如在 whosebug.com 上,证书有一个 CN *.stackexchange.com 但主题备用名称:
DNS:*.askubuntu.com, DNS:*.blogoverflow.com, DNS:*.mathoverflow.net, DNS:*.meta.stackexchange.com, DNS:*.meta.whosebug.com, DNS:*.serverfault.com, DNS:*.sstatic.net, DNS:*.stackexchange.com, DNS:*.whosebug.com, DNS:*.Whosebug.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:Whosebug.blog, DNS:whosebug.com, DNS:Whosebug.email, DNS:stacksnippets.net, DNS:superuser.com
有两种解决方法
1- 将 ssl 证书添加到负载平衡:您需要使用所有受支持的 DNS 名称(app.mydomain.com 和 design.customerwebsite.com)请求证书/并且您需要使用 Route53 管理 customerwebsite.com 域。我认为你的情况是不可能的。
2-不要在负载均衡器上使用ssl:对于这个选项,我们不会终止负载均衡器上的ssl,但是,它会被传递给nginx来处理。您的负载均衡器配置应该类似于
您需要生成一个包含两个域的新 ssl 证书
sudo certbot --nginx -n --redirect -d app.mydomain.com -d *.mydomain.com -d design.customerwebsite.com -d *.customerwebsite.com
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;
}
}
你忘记了一些细节......
您必须对域进行配置
/////// app.myDominio.com ////////
就像您为普通域所做的那样,并且也仅为该域创建 SSL。您可以使用 let 脚本。
为 NGINX 日志配置一个路径,以便您可以检查 NGINX 检测到的错误。
您也可以在 NGINX 设置中使用它
* .domain.com
(其中 * 表示应用程序,可能会检测到)
我正在开发 Web 应用程序。
我的应用 运行 在子域 app.mydomain.com
我需要为我的应用程序添加白标。我要求我的客户通过 CNAME 将他们自己的网站指向我的应用程序。
design.customerwebsite.com
指向app.mydomain.com
这是我试图解决的问题。
我在 /etc/nginx/sites-available
中创建了一个名为 customerwebsite.com
的新文件
向文件添加了符号链接。
我使用 certbot
通过以下命令安装了 SSL。
sudo certbot --nginx -n --redirect -d design.customerwebsite.com
这是我 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;
}
}
我成功地 运行 我的网络应用 https://design.customerwebsite.com
但是SSL证书显示指向app.mydomain.com
,显示不安全。
我的 app.mydomain.com
有来自 Amazon ACM 的 SSL 证书,该证书通过负载均衡器附加。
解决这个问题的方法是什么?
我认为提供给 ACM 负载均衡器的元素必须匹配您可能接收请求的每个域。在证书中,您应该有一个包含每个匹配域的主题备用名称。
例如在 whosebug.com 上,证书有一个 CN *.stackexchange.com 但主题备用名称:
DNS:*.askubuntu.com, DNS:*.blogoverflow.com, DNS:*.mathoverflow.net, DNS:*.meta.stackexchange.com, DNS:*.meta.whosebug.com, DNS:*.serverfault.com, DNS:*.sstatic.net, DNS:*.stackexchange.com, DNS:*.whosebug.com, DNS:*.Whosebug.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:Whosebug.blog, DNS:whosebug.com, DNS:Whosebug.email, DNS:stacksnippets.net, DNS:superuser.com
有两种解决方法 1- 将 ssl 证书添加到负载平衡:您需要使用所有受支持的 DNS 名称(app.mydomain.com 和 design.customerwebsite.com)请求证书/并且您需要使用 Route53 管理 customerwebsite.com 域。我认为你的情况是不可能的。
2-不要在负载均衡器上使用ssl:对于这个选项,我们不会终止负载均衡器上的ssl,但是,它会被传递给nginx来处理。您的负载均衡器配置应该类似于
您需要生成一个包含两个域的新 ssl 证书
sudo certbot --nginx -n --redirect -d app.mydomain.com -d *.mydomain.com -d design.customerwebsite.com -d *.customerwebsite.com
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;
}
}
你忘记了一些细节...... 您必须对域进行配置
/////// app.myDominio.com ////////
就像您为普通域所做的那样,并且也仅为该域创建 SSL。您可以使用 let 脚本。 为 NGINX 日志配置一个路径,以便您可以检查 NGINX 检测到的错误。
您也可以在 NGINX 设置中使用它 * .domain.com (其中 * 表示应用程序,可能会检测到)