使用nginx进行aws-api网关客户端ssl证书验证



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

我注意到在文档中,AWS API网关只发送客户端证书和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;
    }
  }
}

您误解了文档,尽管原因很容易理解。

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

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

SSL客户端证书在没有HTTPS的情况下不起作用,在没有服务器上配置的SSL证书的情况下也不起作用。

相关内容

  • 没有找到相关文章

最新更新