使用客户端证书的AWS Api网关呼叫的EC2(带有Nginx的Ubuntu)配置

时间:2016-07-08 12:45:58

标签: amazon-web-services ssl nginx amazon-ec2 aws-api-gateway

的/ etc / nginx的/ /默认启用位点-

server {
    listen 80 default_server;
    root /var/www/example;
    index index.php;
    server_name localhost;

    location / {
        try_files $uri/ /index.php
    }
    ...
}

这很好用。我没有在该实例上安装SSL。除了来自AWS API-Gateway的调用之外,我想阻止访问我的api(扩展到多个EC2实例)。我在API网关控制台(.pem)下创建了一个客户端证书,并将以下内容添加到nginx配置中:

server {
    listen 443;
    ssl on;
    ssl_client_certificate /etc/nginx/ssl/cert.pem;
    ssl_trusted_certificate /etc/nginx/ssl/cert.pem;
    ssl_verify_client on;

    root /var/www/example
    index index.php;
    server_name localhost;

    location / {
        try_files $uri /index.php
    }

    ...
}

错误日志显示'没有为/ etc / nginx / sites-enabled / default:24 '中的“ssl”指令定义ssl_certificate。好,可以。我从nginx文档中尝试了一些其他技巧,但没有运气。那么通过认证并将if-then添加到nginx配置以仅接受来自API网关的流量呢?怎么做到呢?在您看来,在接收端不需要SSL的情况下,最好的方法是什么?

1 个答案:

答案 0 :(得分:-1)

由于您使用客户端证书来保护端点,因此API网关需要HTTPs协议。没有有效证书,API网关服务不信任任何集成端点。此外,还有关于how to setup Client side certificate auth in Nginx的非常明确的文档。你可能也想看看。