使用AWS API Gateway的客户端证书

时间:2015-09-28 17:31:45

标签: authentication ssl https client-certificates aws-api-gateway

我正在尝试为aws api网关和我的服务器之间的通信实现相互身份验证。我想使用亚马逊提供的客户端证书进行身份验证。我知道我的服务器配置正确,因为之前我使用的是lambda函数,并且相互认证正常。

我已导出(.PEM)证书并将其添加到信任库中。我已将Jetty服务器配置为使用该信任库进行身份验证。我已将client-auth设置为:need。我知道我的服务器设置正确,因为它正在使用我自己实现的相互SSL。我所做的就是改变信任库。当我测试我的方法网关返回200:  {" message":"未知端点错误。"}

以下是服务器日志文件的摘录。似乎服务器端握手完成,但客户端证书出错。

  

pConnection @ 3a0a2e84 {FILLING}服务器端握手已完成   2015-09-28 13:04:29,856 DEBUG [qtp1980278840-19]   o.e.j.i.ChannelEndPoint - 冲了45   SelectChannelEndPoint @ 2c05eeb2 {ec2-xx-xxx-xxx-x.compute-1.amazonaws.com/5x.xxx.xxx.x:43942< - &GT 4000,打开,IN,OUT, - , - ,0/200000 ,SslConnection} {IO = 0,KIO = 0,库洛= 1}   2015-09-28 13:04:29,856 DEBUG [qtp1980278840-19]   o.e.j.i.s.SslConnection -   SslConnection @ 50e2de43 {NOT_HANDSHAKING,eio = 0/0,di = -1} - &gt;   HttpConnection @ 3a0a2e84 {FILLING}刷新退出,消耗0 2015-09-28   13:04:29,856 DEBUG [qtp1980278840-19] o.e.j.i.s.SslConnection -   SslConnection @ 50e2de43 {NOT_HANDSHAKING,eio = 0 / -1,di = -1} - &gt;   HttpConnection @ 3a0a2e84 {FILLING}展开状态= BUFFER_UNDERFLOW   HandshakeStatus = NOT_HANDSHAKING

1 个答案:

答案 0 :(得分:8)

我已经解决了这个问题。我发布的服务器日志具有误导性。没有握手,因为我使用的服务器证书是自签名的,没有受信任的CA签名。自2015年9月28日起,aws api网关需要由受信任的证书颁发机构签名的证书。因为我的证书是自签名的,所以服务器(和客户端)握手没有完成。希望这个问题将在未来版本中得到解决。