2

如何将Elastic Beanstalk的访问限制为仅限于API网关?AWS Elastic Beanstalk仅向API网关打开

我找到类似的问题here,建议在API网关上创建证书。

我的后端解决方案就像是在图像上:

enter image description here

我在API网关(AWS doc)创建的证书。

1.哪个元素应该使用API​​网关生成的PEM编码证书对API进行身份验证?

2.是否可以在Elastic Load Balancer(ELB)上做到这一点,或者我应该在应用程序实例上执行此操作,其中nginx正在运行?

+0

我不确定这是文档错误还是实际问题,但他们当前在“已知问题”中列出了nginx作为后端,可能不支持与API网关兼容的SSL客户端身份验证:http:// docs。 aws.amazon.com/apigateway/latest/developerguide/api-gateway-known-issues.html –

回答

0

由于ELB不支持两种SSL身份验证,您应该在您的nginx服务器上验证证书。

您可以像这样配置nginx服务器以接受来自API网关的客户端证书。

server { 
    listen  443; 
    ssl on; 
    server_name example.com; 

    ssl_certificate  /etc/nginx/certs/server.crt; 
    ssl_certificate_key /etc/nginx/certs/server.key; 
    ssl_client_certificate /etc/nginx/certs/ca.crt; 
    ssl_verify_client optional; 

    location/{ 
     root   /var/www/example.com/html; 
     fastcgi_pass 127.0.0.1:9000; 
     fastcgi_param SCRIPT_FILENAME /var/www/example.com/lib/Request.class.php; 
     fastcgi_param VERIFIED $ssl_client_verify; 
     fastcgi_param DN $ssl_client_s_dn; 
     include  fastcgi_params; 
    } 
} 

然后,使用API​​网关控制台上的测试调用功能来测试此设置是否适用于您。