在本地运行firebase函数时如何使https工作并添加自签名SSL证书?

问题描述 投票:3回答:1

我正在通过单个Firebase函数运行一个嵌套api,并且由于OAuth&的缘故,我的控制器中的许多端点都需要SSL才能正常工作,因为它们会发回一个仅HTTPS签名的cookie。

因此,我需要能够使用SSL运行本地提供的firebase函数。我已经生成并注册了证书,并且以前将其用于React / Angular和独立的Node + Nest项目。

这是专门用于使其与Firebase函数一起使用。

当前,在我的索引中,我有:

export const API = functions
  .region("europe-west2")
  .https.onRequest(nestApp);

nestApp在哪里

const server = express();

现在在普通的Node + Nest应用程序中,我要做的就是:

app = await NestFactory.create(AppModule, {
  httpsOptions: {
    key: keyFile,
    cert: certFile,
  },
});

使它适应上面的firebase函数不起作用,因为我必须传递Express实例。我遍历了文档和类型,到处都是对象的嵌套位置,其中带有key和cert的http选项位于其中,但是没有运气。

@nestjs/common的HttpOptions接口确实具有这两个属性,但是express adapter.options()接受请求处理程序,而不是该options对象。

node.js firebase google-cloud-functions nestjs firebase-tools
1个回答
0
投票

我认为您想做的事是不可能的...您想要它做事的方式。

在本地运行Cloud Function的目的是为了进行代码测试,但即使在本地环境下,Google仍将管理背后的基础架构(SSL,身份验证等)。>

而不是使用功能来管理此功能,为什么不模拟

小型服务器?我可以想到一个简单的NGINX as a Reverse proxy(您可以为此使用任何服务)。这将使您能够以更友好的方式管理SSL证书。

这样想:在您的工作流程中,您直接调用NGINX而不是Function。 NGINX将在内部调用Cloud Function,该函数将执行其工作并将响应返回给NGINX,然后从NGINX返回您的工作流,并带有https-signed

以便进行下一步。

希望这会有所帮助! :)

© www.soinside.com 2019 - 2024. All rights reserved.