7

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

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

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

pConnection@3a0a2e84{FILLING} 服务器端握手完成 2015-09-28 13:04:29,856 调试 [qtp1980278840-19] oejiChannelEndPoint - 刷新 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 调试 [qtp1980278840-19] oejisSslConnection - SslConnection@50e2de43{NOT_HANDSHAKING,eio=0/0,di=-1} -> HttpConnection@3a0a2e84{FILLING} 冲洗退出,消耗 0 2015-09-28 13 :04:29,856 DEBUG [qtp1980278840-19] oejisSslConnection - SslConnection@50e2de43{NOT_HANDSHAKING,eio=0/-1,di=-1} -> HttpConnection@3a0a2e84{FILLING} 解开状态 = BUFFER_UNDERFLOW HandshakeStatus = NOT_HANDSHAKING

4

1 回答 1

9

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

于 2015-09-28T20:22:23.063 回答