我有一个服务在AWS Fargate上的ELB后面运行,作为一个docker容器,其中有nginx,位于443端口(https(。
我已经将客户端证书添加到我的nginx.conf中:
ssl_verify_client on;
ssl_verify_depth 2;
ssl_client_certificate "/etc/pki/nginx/clientcert.pem";
我测试了本地和部署在AWS Fargate上的docker容器。
openssl s_client -connect localhost:8443 -state -debug >local.log 2>&1
openssl s_client -connect my.aws.site.net:443 -state -debug >fargate.log 2>&1
当我在自己的机器上运行docker容器时,我看到它请求证书,但在Fargate上没有。
现在,在Fargate上,我和我的docker容器之间有一个弹性负载均衡器(ELB(。这个ELB用自己的证书交换证书。实际上,ELB从我的容器中读取HTTPS响应,对其进行解密,然后用它自己的公共证书对其进行重新加密(这称为TLS终止吗?(。我想知道ELB是否也有可能清除任何客户端证书请求?
编辑:也许这是相关的-AWS EC2应用程序负载均衡器+双向SSL?
我认为如果您使用ALB,将会终止SSL。但是,如果您不希望SSL在负载平衡器上终止,而是在NGINX服务器上终止,您可以使用NLB,我相信它不会终止SSL。
经过更多的研究,我确信它确实破坏了mTLS,只是因为它终止了TLS连接,所以我们在客户端和后端服务器之间并没有真正的TLS连接。
我们有两个独立的TLS连接——一个在客户端和ELB之间,另一个在ELB和服务器之间。