与这里的其他问题类似,我正在尝试使用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证书的情况下也不起作用。