我希望设置一个使用 HTTPS 与后端服务器通信的 ELB。我正在尝试使用单个后端服务器设置概念证明,但似乎无法让 ELB 与服务器通信。我几乎可以肯定这是一个证书问题,因为没有 SSL 的任何设置都可以完美运行。
我该如何设置?我从多个答案和博客文章中尝试了各种建议,但没有运气。
我现在正在做的是使用以下命令设置自签名证书(来自AWS ELB -> Backend Server over HTTPS with Self-Signed Certificate):
$ openssl genrsa \
-out /path/to/ssl.key 2048
$ openssl req \
-sha256 \
-new \
-key /path/to/ssl.key \
-out /path/to/ssl.csr
$ openssl x509 \
-req \
-days 365 \
-in /path/to/ssl.csr \
-signkey /path/to/ssl.key \
-out /path/to/ssl.crt
我在签名时尝试了多个域名,并且可以使用它们进行 curl:
curl https://[Public DNS, or private DNS or IP used to create the SSL crt]/status --cacert /path/to/ssl.crt
我应该在这里使用域/IP/DNS 条目吗?我觉得 curl 至少有效。
目前我的 nginx 配置(在启用站点的文件中)如下所示:
server {
listen 443 ssl;
listen [::]:443 ssl;
ssl_certificate /path/to/ssl.crt;
ssl_certificate_key /path/to/ssl.key;
server_name <dummy value of "_" or name used to make SSL certs>;
client_max_body_size 20M;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
location / {
proxy_pass http://127.0.0.1:8000/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
这适用于上面的 curl 命令。
我尝试过经典和应用程序负载均衡器。对于经典,我尝试添加 ssl.crt 内容 - 我没有看到与应用程序负载均衡器类似的选项,但我想尽可能使用它们,因为它们可以非常轻松地转发 HTTP->HTTPS。无论哪种方式,经典负载均衡器或应用程序负载均衡器都不会与服务器通信。
关于缺少什么的任何建议?或者如何确定缺少什么?