Amazon web services 使用带有自签名证书的HTTPS将ELB连接到后端服务器
我期待着建立一个ELB,使用HTTPS与后端服务器通信。我试图使用一个后端服务器建立一个概念验证,但似乎无法让ELB与服务器通信。我几乎可以肯定这是一个证书问题,因为任何没有SSL的设置都可以完美地工作 我如何设置这个?我尝试了来自多个答案和博客帖子的各种建议,但没有成功 我现在正在使用以下命令(从)设置自签名证书: 我在签名时尝试了多个域名,我可以使用它们:Amazon web services 使用带有自签名证书的HTTPS将ELB连接到后端服务器,amazon-web-services,ssl,aws-elb,Amazon Web Services,Ssl,Aws Elb,我期待着建立一个ELB,使用HTTPS与后端服务器通信。我试图使用一个后端服务器建立一个概念验证,但似乎无法让ELB与服务器通信。我几乎可以肯定这是一个证书问题,因为任何没有SSL的设置都可以完美地工作 我如何设置这个?我尝试了来自多个答案和博客帖子的各种建议,但没有成功 我现在正在使用以下命令(从)设置自签名证书: 我在签名时尝试了多个域名,我可以使用它们: curl https://[Public DNS, or private DNS or IP used to create the SS
curl https://[Public DNS, or private DNS or IP used to create the SSL crt]/status --cacert /path/to/ssl.crt
这里有我应该使用的域/IP/DNS条目吗?我感觉很好,至少卷发有效
当前,我的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;
}
}
server {
# listen 80 #uncomment to also listen on port 80 - useful for debugging
listen 443 ssl;
listen [::]:443 ssl;
server_name {{hostname}};
ssl_certificate /etc/ssl/certs/{{hostname}}.crt;
ssl_certificate_key /etc/ssl/private/{{hostname}}.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
add_header X-Frame-Options sameorigin;
add_header X-Content-Type-Options nosniff;
location / {
...
}
}
服务器{
听443ssl;
听[:]:443 ssl;
ssl_证书/path/to/ssl.crt;
ssl\u证书\u密钥/path/to/ssl.key;
服务器名称;
客户最大尺寸为20M;
access\u log/var/log/nginx/access.log;
error\u log/var/log/nginx/error.log;
地点/{
代理通行证http://127.0.0.1:8000/;
代理_重定向关闭;
代理设置头主机$Host;
代理集头X-Real-IP$remote\u addr;
proxy\u set\u header X-Forwarded-For$proxy\u add\u X\u Forwarded\u For;
}
}
这与上面的curl命令一起使用
我尝试过经典和应用程序负载平衡器。对于classic,我尝试添加ssl.crt内容-我没有看到应用程序负载平衡器的类似选项,尽管我希望尽可能使用它们,因为它们可以非常轻松地转发HTTP->HTTPS。无论采用哪种方式,经典负载平衡器或应用程序负载平衡器都不会与服务器通信
对遗漏的内容有什么建议吗?或者如何确定遗漏了什么?这很接近,只遗漏了几个小步骤。我和ALB ELB一起工作 首先,我使用了一个类似于这里描述的脚本: 域看起来有点像ip-172-10-11-12 为了调试所有的东西,我运行了以下类似的东西-这是从内存中获得的,所以它可能有详细信息。我首先通过点击nginx确保可以在本地卷曲服务器:
curl https://ip-172-10-11-12/healthcheck --cacert /etc/ssl/certs/ip-172-10-11-12.crt
然后我得到了ELB的地址,并确保我能靠着它卷曲。我必须在一台可以进入ELB机器的机器上。请注意,由于安全规则,ELB不是pinagable,而是curl。我相信我用两种方法测试了这一点。首先,我尝试:
curl https://elb-address/healthcheck --insecure
然后我将ip-172-10-11-12添加到/etc/hosts文件并尝试:
curl https://ip-172-10-11-12/healthcheck --cacert /cert/file/copied/onto/machine
一旦我开始工作,ALB ELB就开始工作了。我必须检查防火墙规则、AWS安全组等,在最后一次通话成功之前。但当它工作时,ELB开始看到服务器
在调试时,我还有最后一点见解:如果从公共internet访问ELB,则ELB必须只有公共子网,并且公共子网应与目标机器位于同一可用区域
curl https://elb-address/healthcheck --insecure
curl https://ip-172-10-11-12/healthcheck --cacert /cert/file/copied/onto/machine