与其他问题类似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;
}
}
}
答案 0 :(得分:2)
你错误地解释了文档,虽然原因很容易理解。
API网关将使用该证书对API中的所有HTTP集成调用。
要解析的短语是" HTTP集成" - 与Lambda或AWS服务代理相反 - 不是" HTTP"如在" HTTP没有SSL"。他们正在使用" HTTP"在一般意义上描述一种类型,而不是传输的具体细节。
如果没有HTTPS,SSL客户端证书将无法运行,并且在服务器上未配置SSL证书的情况下无法工作。