2

我在 API Gateway 上生成了一个客户端 SSL 证书并将其添加到我的 nginx 配置中,如下所示:

listen *:443;
ssl on;
server_name api.xxxx.com;
ssl_certificate /etc/letsencrypt/live/api.xxxx.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/api.xxxx.com/privkey.pem;
ssl_verify_client on;
ssl_client_certificate /etc/nginx/ssl/awsapigateway.crt;

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

通过 AWS API 网关测试控制台进行测试后,客户端证书不起作用。最终出现错误 400 - 未发送所需的 SSL 证书。API Gateway应该随每个请求将其客户端证书发送到我的服务器,以便我可以验证请求是否真正来自 API Gateway。

我相信它不起作用的原因是我将来自 AWS API 网关控制台的 PEM 编码公钥直接添加到 awsapigateway.crt。那是对的吗?

此外,nginx 是否支持自签名客户端 SSL 证书,这是 AWS 为我们提供的?

4

1 回答 1

1

Api Gateway 团队在这里。

看起来nginx配置是正确的。对于我们的简单测试用例,我们使用节点服务器并简单地将 PEM 证书从控制台直接写入设置为 ca 的 crt 文件,或者在本例中为 ssl_client_certificate。

如果由于某种原因控制台中的测试功能有问题,我也会使用实际部署的 API 进行测试。确保使用阶段设置来指定证书。

于 2015-12-18T00:29:58.500 回答