是否可以使用与API网关的客户端证书一起使用的自签名证书



以下是我的情况:

我正在使用弹性豆键来旋转一个没有ELB的EC2实例。我想只能通过API网关访问实例。因此,我走了使用客户端证书进行身份验证的路线,如此处所述。

我的EC2实例的NGINX服务于Rails应用程序。我在计算机上生成了一个自签名的证书,并配置了nginx将其用于HTTPS。

一切都很好,但是当我尝试从API网关控制台调用我的代理端点时,我会收到一个500错误,如下所示:

...
Thu Sep 14 02:27:05 UTC 2017 : Endpoint request URI: https://xxxxxxxxx.xxxxxxxxx.us-east-1.elasticbeanstalk.com/health
Thu Sep 14 02:27:05 UTC 2017 : Endpoint request headers: {x-amzn-apigateway-api-id=xxxxxxxxx, User-Agent=AmazonAPIGateway_xxxxxxxx, Accept-Encoding=identity}
Thu Sep 14 02:27:05 UTC 2017 : Endpoint request body after transformations: 
Thu Sep 14 02:27:05 UTC 2017 : Sending request to https://xxxxxxxxx.xxxxxxxx.us-east-1.elasticbeanstalk.com/health
Thu Sep 14 02:27:05 UTC 2017 : Execution failed due to configuration error: General SSLEngine problem
Thu Sep 14 02:27:05 UTC 2017 : Method completed with status: 500

我认为这与我在后端使用自签名证书的事实有关。但是,我真的必须购买合法证书才能完成我的设置吗?是否还有其他解决方案可以让我仅通过API网关接受对我的EC2实例的请求?

我查看了此处描述的lambda方法,但我不想在请求中添加更多复杂性或延迟。

这是我的nginx配置,以实现完整性:

server {
      listen       443;
      server_name  localhost;          
      ssl                  on;
      ssl_certificate      /etc/pki/tls/certs/server.crt;
      ssl_certificate_key  /etc/pki/tls/certs/server.key;
      ssl_session_timeout  5m;
      ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
      ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
      ssl_prefer_server_ciphers   on;
      ssl_client_certificate /etc/pki/tls/certs/api_gateway.cer;
      ssl_verify_client on;
      if ($ssl_protocol = "") {
        return 444;
      }
  }

请参阅我的答案AWS API网关 - 使用客户端SSL证书。sot确保与Nginx是什么不兼容 - 我设法创建了POC并使用客户端SSL行为进行身份验证

在撰写本文时出现API网关与客户端证书周围的NGINX不兼容。

相关内容

  • 没有找到相关文章

最新更新