一尘不染

如何将服务器的私钥存储在Google App Engine中?

go

"github.com/dgrijalva/jwt-go"用来创建JSON Web令牌。
当我在本地托管服务器时,可以照常使用私钥。但是在GAE中它将无法工作,因为我无权访问文件系统。

你们会如何做?将密钥存储在数据存储中还是其他任何想法?

谢谢

编辑:

我的app.yaml样子是这样(在下面api_version):

handlers:
- url: /.*
  script: _go_app

阅读 286

收藏
2020-07-02

共1个答案

一尘不染

在AppEngine上,您无权访问主机操作系统的文件系统,但可以访问Web应用程序的文件(您具有只读权限,不能更改它们,也不能在其中创建新文件应用程序的文件夹)。

所以问题是:您是否要在不重新部署应用程序的情况下从应用程序更改此私钥?或者,如果它与您的应用程序代码“静态”部署在一起,那会很好吗?

如果不需要更改(或仅在重新部署应用程序时),最简单的方法是将其存储为“静态”文件,作为Web应用程序的一部分。您可以使用相对路径引用应用程序文件,其中当前目录或工作目录是应用程序的根目录。例如,如果您的应用key在其根目录(app.yaml所在的位置)中包含一个文件夹,并且my_key.txtkey文件夹中有一个文件,则可以使用路径引用它key/my_key.txt

实际上,将静态文件与应用程序的代码“运输”在一起是很常见的:考虑一下由Go代码(例如package
html/template)读取和处理以产生HTML结果的HTML模板;HTML模板文件的内容不会直接提供给客户端。

如果您需要不时更改它而不必重新部署应用程序,则将其存储在您的应用程序可以读取和修改的数据存储区中。

注意:

重要注意事项:并非每个文件都能被代码读取,这取决于应用程序配置。引用从使用app.yaml配置/静态文件处理程序进行配置

静态文件是针对给定URL直接提供给用户的文件,例如图像,CSS样式表或JavaScript源文件。静态文件处理程序描述应用程序目录中的哪些文件是静态文件,以及由哪些URL服务。

为了提高效率,App Engine与应用程序文件分开存储和提供静态文件。静态文件在应用程序的文件系统中不可用。
如果您有需要由应用程序代码读取的数据文件,则这些数据文件必须是应用程序文件,并且不能与静态文件模式匹配。

可以通过两种方式定义静态文件处理程序:作为映射到URL路径的静态文件的目录结构,或作为将URL映射到特定文件的模式。

阅读链接,了解如何正确配置应用程序和静态文件/目录。

2020-07-02