首页 文章

代理通过AWS API Gateway调用SSL endpoints

提问于
浏览
3

目前,我的apis可通过SSL endpoints 访问 . 我尝试配置aws api网关以代理对我的 endpoints 的请求 .

我已启用输入传递并将application / json设置为content-type .

在任何情况下,当我在aws web interface上尝试测试请求时,使用GET方法来查找类似于此https://subdomain.domain.com/v1/resource的SSL网址,我收到以下错误 .

Execution log for request test-request
Thu Aug 06 06:55:27 UTC 2015 : Starting execution for request: test-invoke-request
Thu Aug 06 06:55:27 UTC 2015 : API Key: test-invoke-api-key
Thu Aug 06 06:55:27 UTC 2015 : Method request path: {}
Thu Aug 06 06:55:27 UTC 2015 : Method request query string: {}
Thu Aug 06 06:55:27 UTC 2015 : Method request headers: {}
Thu Aug 06 06:55:27 UTC 2015 : Method request body before transformations: null
Thu Aug 06 06:55:27 UTC 2015 : Endpoint request URI: https://xyz.domain.com/v1/resource
Thu Aug 06 06:55:27 UTC 2015 : Endpoint request headers: {Accept=application/json, User-Agent=AmazonAPIGateway_6cb3krv5t9}
Thu Aug 06 06:55:27 UTC 2015 : Endpoint request body after transformations: 
Thu Aug 06 06:55:27 UTC 2015 : Execution failed due to configuration error: handshake alert: unrecognized_name

SSL证书缺少什么?

任何帮助或线索都表示赞赏 .

2 回答

  • 4

    我认为对此的答案是对您的Web服务器进行了一些微妙的错误配置,浏览器可能会忽略,但Java(在AWS基础架构中)却没有 .

    问题并不完全是SSL handshake alert: unrecognized_name error since upgrade to Java 1.7.0的重复,因为它发生在一个不同的(从你的角度来看)环境......但我相信这个问题解释了你所看到的 .

    现代TLS(SSL)堆栈具有为长期存在的问题提供解决方案的功能:在HTTP over SSL(HTTPS)中,必要的SSL协商发生在请求标头(包括 Host: 标头)发送之前......并且只能向客户端提供一个SSL证书 . 在引入服务器名称标识(SNI)扩展之前,这实际上意味着您的服务器上每个公共IP地址限制为1个SSL证书,因此如果您有多个具有单独SSL证书的域,则必须公开每个证书的IP地址,以便Web服务器为域名提供正确的证书,因为证书绑定到服务器配置中的IP地址 .

    现在,至少对于现代浏览器,SNI允许浏览器在服务器发送证书之前给服务器一个关于它将要发出请求的主机名的提示......对于不同的域,它可能是几个之一 . 这消除了每个证书一个静态IP的旧的和浪费的做法,因为它允许在服务器正在监听的一个IP地址后面配置多个证书 .

    客户端(API Gateway 's 934346 component connecting to you, in this case) 934347 in TLS negotiation, and the SNI is in the first message. If the server understands the message construction, but isn'期望看到该特定主机名,应该会抛出致命错误,但它也只能发送一条警告消息 .

    该消息可能是一个警告,看起来很像您在日志中看到的内容 . 如果Java TLS实现是严格的,并且您的服务器以这种方式配置错误(不识别SNI上下文中的主机名,并发送警告而不是错误),那么我会期待这种行为,即使其他客户端也是如此(用户代理库和浏览器)可能只是继续SSL协商而没有明显错误,如果服务器默认提供的证书确实有效且与域匹配,则“原谅”警告级别警报 .

    如果我正确拼凑了这个拼图,您应该能够使用像 tshark 这样的数据包嗅探器来确认此行为,并相应地更正您的Web服务器的行为 .

  • 0

    对于 API Gateway 团队中的某个人来说,这似乎是一个非常具体的问题 . 社区在这里无法真正帮助您 . 尝试通过AWS论坛上的API Gateway section与AWS联系 .

相关问题