使用nginx的aws api网关客户端ssl证书验证

时间:2015-10-28 13:29:43

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

与其他问题类似here我正在尝试使用已通过AWS API网关发送的nginx验证SSL客户端证书。

我注意到在documentation中,AWS API Gateway仅发送客户端证书和HTTP请求。这是否意味着不应该配置HTTPS?

与上面发布的问题的链接相反,nginx托管的域没有设置https证书。

任何帮助,或使用ssl_verify_client链接到工作配置而不为域配置ssl将不胜感激。

这是我目前正在使用的nginx配置:

daemon off;

events {
  worker_connections  4096;
}

http {
  server {
    listen 2345 default_server;

    ssl_trusted_certificate /certs/api-gateway.crt;
    ssl_client_certificate /certs/api-gateway.crt;
    ssl_verify_client on;

    ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";
    ssl_prefer_server_ciphers on;

    location /ping {
      proxy_pass http://my.http.public.endpoint.com;
    }

    location / {
      if ($ssl_client_verify != SUCCESS) { return 403; }
      proxy_pass http://my.http.public.endpoint.com;
      proxy_set_header X-Client-Verify $ssl_client_verify;
    }
  }
}

1 个答案:

答案 0 :(得分:2)

你错误地解释了文档,虽然原因很容易理解。

  

API网关将使用该证书对API中的所有HTTP集成调用。

要解析的短语是" HTTP集成" - 与Lambda或AWS服务代理相反 - 不是" HTTP"如在" HTTP没有SSL"。他们正在使用" HTTP"在一般意义上描述一种类型,而不是传输的具体细节。

如果没有HTTPS,SSL客户端证书将无法运行,并且在服务器上未配置SSL证书的情况下无法工作。