我在 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 为我们提供的?