为了账号安全,请及时绑定邮箱和手机立即绑定

如何将我的服务器的私钥存储在谷歌应用引擎中?

如何将我的服务器的私钥存储在谷歌应用引擎中?

Go
HUH函数 2021-12-06 19:33:38
我正在使用"github.com/dgrijalva/jwt-go"创建 JSON 网络令牌。当我在本地托管我的服务器时,我可以像往常一样使用我的私钥。但是在 GAE 中它不起作用,因为我无权访问文件系统。你们会怎么做?将密钥存储在数据存储或任何其他想法中?谢谢编辑:我app.yaml看起来像这样(下面api_version和东西):handlers:- url: /.*  script: _go_app
查看完整描述

2 回答

?
慕侠2389804

TA贡献1719条经验 获得超6个赞

在 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 映射到特定文件的模式。

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


查看完整回答
反对 回复 2021-12-06
?
子衿沉夜

TA贡献1828条经验 获得超3个赞

解决方案是保留 app.yaml 原样。将 app.yaml 放在项目的 root lvl 中。然后将所有导入从 GOPATH 更改为从项目根目录开始。让我选择将 app.yaml 和 main go 文件放在项目根目录下的不同文件夹中的问题是因为双重导入。阅读本文以获得更好的理解:Google Go AppEngine 导入和服务/测试时的冲突

该解决方案使我的项目找到了我想要的文件


查看完整回答
反对 回复 2021-12-06
  • 2 回答
  • 0 关注
  • 186 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信