【发布时间】:2017-12-16 05:45:44
【问题描述】:
我有一个小型 API 网关端点,它将客户端证书发送到后端服务器。此后端服务器在 ELB 后面的 Sails 上运行。我想要做的是过滤 Sails 中的一些路由,并且策略应该在请求中查找证书,如果没有发送,则拒绝,如果它(验证公钥)然后允许它继续。
在 AWS API Gateway (http://docs.aws.amazon.com/apigateway/latest/developerguide/getting-started-client-side-ssl-authentication.html) 的文档中,他们建议使用 client-certificate-auth (https://www.npmjs.com/package/client-certificate-auth),但我找不到在 Sails 后端使用它的方法。
我尝试在 Sails 中使用 serverOptions,但它崩溃了:
error: TypeError: "listener" argument must be a function
所以我对这个很迷茫。如果有人有这方面的经验,请指教:)
谢谢
【问题讨论】:
-
你是否在 Node 前面使用了一些东西,比如 Nginx、Apache 或 HAProxy?如果是这样,that 可以处理证书验证。您的后端服务器现在使用 SSL 吗?如果没有,你当然也需要那个......
-
@Michael-sqlbot EC2 服务器前面有一个弹性负载均衡器 (AWS ELB)
-
ELB 不支持使用客户端证书进行 SSL 卸载。
-
@Michael-sqlbot 这是否意味着如果我的实例位于 ELB 之后,则无法验证 API Gateway 客户端证书?
-
不,这意味着您必须将 ELB 设置为在 tcp 模式下运行,以充当 L4 tcp 负载均衡器并终止 ELB 后面的 EC2 实例上的连接。当然,你还需要弄清楚如何配置 Sails 来验证 API Gateway 使用的客户端证书。
标签: amazon-web-services sails.js aws-api-gateway public-key