当前位置: 首页 > 面试题库 >

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

黄弘新
2023-03-14
问题内容

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

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

谢谢

编辑:

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

handlers:
- url: /.*
  script: _go_app

问题答案:

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

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



 类似资料:
  • 有没有人可以粘贴一些用于存储私钥和公钥的示例代码。 非常感谢!

  • 问题内容: 我正在使用该方法在Go中生成私钥/公钥对。我想将私钥存储在用户计算机上的文件中,并在程序启动时将其加载。有一种封送公钥的方法,但没有封送私钥的方法。我应该简单地自己滚动还是有推荐的存储私钥的方法? 问题答案: 这是一个代码示例,演示了Go中密钥的编码和解码。知道您需要连接几个步骤会有所帮助。加密算法是第一步,在这种情况下为ECDSA密钥。然后,您需要标准编码,x509是最常用的标准。最

  • 我正在尝试使用下面的代码从Android系统存储中导入私钥: 其中是使用方法检索的。不返回,但PrivateKey对象包含错误的键(其所有重要字段都为)。我认为密钥是不可导出的,并试图在下一段代码中使用它: UPD:我试着用不同的RSA证书做同样的事情,结果是一样的:(

  • 问题内容: 我曾经生成过RSA密钥对。如果我没看错,那么KeyStore仅用于存储证书,而不用于存储密钥。如何将私钥正确存储在计算机上? 问题答案: 注意:此代码仅用于演示目的。将私钥存储在磁盘上时,必须对其进行加密。不要按原样使用它。 您可以执行以下操作: 保存功能: 并以相同的方式读回: 读取私钥相似。

  • 问题内容: 我需要将两个对象注入。其中一个是的实例,我得到这样的信息: 那么如何在我的services.yml中声明呢?这是服务: 问题答案: 我找到了此链接,这对我有用: