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



我正在从单个Firebase函数运行一个嵌套api,并且由于OAuth的原因,整个控制器中的许多端点都需要SSL才能工作,因为它们发回了一个仅https签名的cookie。

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

这具体是关于让它与 firebase 函数一起工作。

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

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

巢应用在哪里

const server = express();

现在在一个普通的节点 + 嵌套应用程序中,我所要做的就是:

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

将其适应上面的 firebase 函数不起作用,因为我必须传递快速实例。我已经通过文档和类型查看了对象嵌套的文档和类型,其中带有键和证书的http选项在哪里,但没有运气。

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

我认为你想做的事情是不可能的......以您希望的方式进行操作。

在本地运行云功能的目标是用于代码测试目的,但Google仍将管理背后的基础架构(SSL,身份验证等(,即使在本地环境中也是如此。

与其使用函数来管理它,为什么不模拟小型服务器呢?我可以将一个简单的NGINX视为反向代理(您可以使用任何您想要的服务(。这将允许您以更友好的方式管理 SSL 证书。

可以这样想:在你的工作流程中,你调用NGINX而不是直接调用函数。NGINX将在内部调用云函数,该函数将完成其工作,响应将返回到NGINX,然后从NGINX返回到您的工作流程,https签名已准备好进行下一步。

希望对您有所帮助! :)

最新更新