AWS API 网关的客户端证书

Client certificates with AWS API Gateway

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

我已导出 (.PEM) 证书并将其添加到信任库中。我已将 Jetty 服务器配置为使用该信任库进行身份验证。我已将客户端身份验证设置为:需要。我知道我的服务器设置正确,因为它使用我自己实现的相互 SSL。我所做的只是更改信任库。当我测试我的方法网关 returns a 200 时: { "message": "Unknown endpoint error."}

这是服务器日志文件的摘录。服务器端握手似乎已完成,但客户端证书有错误。

pConnection@3a0a2e84{FILLING} server-side handshake completed 2015-09-28 13:04:29,856 DEBUG [qtp1980278840-19] o.e.j.i.ChannelEndPoint - flushed 45 SelectChannelEndPoint@2c05eeb2{ec2-xx-xxx-xxx-x.compute-1.amazonaws.com/5x.xxx.xxx.x:43942<->4000,Open,in,out,-,-,0/200000,SslConnection}{io=0,kio=0,kro=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} -> HttpConnection@3a0a2e84{FILLING} flush exit, consumed 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} -> HttpConnection@3a0a2e84{FILLING} unwrap Status = BUFFER_UNDERFLOW HandshakeStatus = NOT_HANDSHAKING

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