问题描述
是否可以检索 API Gateway 生成的自签名客户端证书,然后用于与 HTTP 代理集成进行通信?我希望能够将证书存储在 Parameter Store 或 Secrets Manager 中。
例如:
const clientCertificate = new CfnClientCertificate(this,"ApigClientCertificate",{
description: "Client certificate presented by APIG when calling HTTPS backend services",});
this.restApi = new SpecRestApi(this,'OpenapiRestApi',{
restApiName: 'My Api',apiDeFinition: ApiDeFinition.fromInline(...some OpenApi API defined here...),deploy: true,deployOptions: {
stageName: 'api',clientCertificateId: clientCertificate.ref,},});
在这里,我通过 OpenAPI 规范定义了一个 APIGateway,我们假设其中有一个 HTTP 代理,用户在其中调用 APIG 端点,并且该调用被转发到 HTTPS 端点,并使用由生成的自签名客户端证书APIG。
是否可以从 APIG 获取 PEM 证书?
解决方法
目前还不可能,因为 AWS::ApiGateway::ClientCertificate 不返回它。
您必须为 custom resource 开发一个 lambda 函数,该函数将使用 AWS API get-client-certificates 来获取证书的正文并返回到您的堆栈。