Google app engine 如何在google app engine中存储服务器的私钥?

Google app engine 如何在google app engine中存储服务器的私钥?,google-app-engine,go,jwt,google-cloud-datastore,Google App Engine,Go,Jwt,Google Cloud Datastore,我正在使用“github.com/dgrijalva/jwt go”创建JSON web令牌。 当我在本地托管服务器时,我可以像往常一样使用私钥。但在GAE中,它不会工作,因为我没有访问文件系统的权限 你们会怎么做?将密钥存储在数据存储或其他想法中 谢谢 编辑: 我的app.yaml看起来像这样(下面是api\u版本等等): 在AppEngine上,您无权访问主机操作系统的文件系统,但可以访问web应用程序的文件(您具有只读权限,无法更改这些文件,也无法在应用程序文件夹中创建新文件) 所以问题是

我正在使用
“github.com/dgrijalva/jwt go”
创建JSON web令牌。
当我在本地托管服务器时,我可以像往常一样使用私钥。但在GAE中,它不会工作,因为我没有访问文件系统的权限

你们会怎么做?将密钥存储在数据存储或其他想法中

谢谢

编辑:

我的
app.yaml
看起来像这样(下面是
api\u版本
等等):


在AppEngine上,您无权访问主机操作系统的文件系统,但可以访问web应用程序的文件(您具有只读权限,无法更改这些文件,也无法在应用程序文件夹中创建新文件)

所以问题是:您是否希望在不重新部署应用程序的情况下更改应用程序中的私钥?或者,如果它与应用程序的代码“静态”部署,那就完全可以了

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

实际上,在应用程序代码中“发送”静态文件是很常见的:只要想想HTML模板,这些模板由Go代码(例如包)读取和处理,以生成HTML结果;HTML模板文件的内容不会直接提供给客户端

如果你不需要重新部署你的应用程序就需要不时地更改它,那么将它存储在你的应用程序可以读取和修改的数据存储中

注意:

一个重要的注意事项是:并非每个文件都是代码可读的,这取决于应用程序配置。引述自:

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

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

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


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

解决方案是保持app.yaml不变。将app.yaml放在项目的根lvl处。然后将所有导入从GOPATH开始更改为从项目根开始。我之所以选择将app.yaml和main go文件放在项目根目录下的另一个文件夹中,是因为双重导入。为了更好地理解,请阅读以下内容:


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

谢谢!回答得好!也许你不想深入研究,但当我部署代码时,我无法让它工作。密钥的路径在为本地服务时有效。我通过执行ioutil.readfile(“keys/demo.rsa”)获得密钥,从根目录中有一个名为keys的文件夹,demo.rsa和demo.rsa.pub都在其中。包含它们的文件位于与密钥相同级别的另一个文件夹中。你知道吗?@Simonnilsonguldstrand请看编辑。需要代码读取的文件必须是应用程序文件,并且不能与任何静态文件模式匹配。我已经阅读了链接处的页面,我想我知道我想要做什么。但是我现在无法部署我的代码。app.yaml中的错误。我只有-url:/.*脚本:\u go\u app first。现在我有了-url:/keys static\u dir:keys application\u readable:true。这看起来不错吗?@simonnilsonguldstrand您的第一个版本,其中只有一个
\u go\u应用程序
条目看起来很完美。您的第二个示例很糟糕:它公开了您的密钥以供公开使用!把那个零钱还给我!
handlers:
- url: /.*
  script: _go_app