存储密钥库密码的位置?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了存储密钥库密码的位置?相关的知识,希望对你有一定的参考价值。
我看到的每个例子都说使用强密码但是他们只是在源代码中使用它。这对我来说似乎不太合适。
是否可以作为当前帐户向密钥库进行身份验证,因此不涉及密码?
如果那是不可能的,我要求不在源代码中存储密码,这是完全可以接受的,但似乎在某些时候密码需要成为等式的一部分,有人可以指出我最安全的方式处理这个(事情?
我很想添加密码作为构建的一部分,但后来我在构建服务器上有一个明文密码,这几乎与我大致相同。
首先,一般规则:如果您运送的软件本身都可以解锁一些“安全存储”(因此,不受您控制的服务器或您控制下的其他硬件的干扰)......这是不可能的从运行它的计算机的所有者隐藏此信息。
示例:Web浏览器往往具有提供存储网站密码的功能。这些密码存储在文件中,使用正确的工具,您可以打开这些文件,并将密码视为日期。使用更多软件或更多加密算法无法解决这个问题。唯一的解决方案是使软件无法解锁所述数据存储区,例如通过要求用户每次想要查看它时输入主密码,或者将某种安全区域放入硬件中并使用它来处理加密。 Java通常没有合适的库来与这些硬件进行交互(苹果的T2是一个非常先进的概念; TPM芯片是一种预算选择)。
所以,一旦你对它好了,你仍然可以去:好吧,我不想在源代码中使用身份验证密钥;为了构建可从源分发的生产,构建者必须提供它。要做到这一点:
(假设maven样式项目结构):
- 制作文件
src/main/resources/com/yourcompany/yourproject/keys/KeyFile.txt
,然后通过将.gitignore
放在那里来更新你的/src/main/resources/com/yourcompany/yourproject/keys/KeyFile.txt
文件以忽略它。 - 在此文件中写入密钥。与一些应该拥有它的项目的所有成员以一些安全的方式共享此文件。
- 编写代码:在
src/main/java/com/yourcompany/yourproject/keys/ProjectKey.java
中有一个静态方法来检索密钥。它看起来像这样:public final class ProjectKey { /* prevent instantiation */ private ProjectKey(){} private static final String PROJECT_KEY = loadKey(); public static String getKey () { if (PROJECT_KEY != null) return PROJECT_KEY; throw new IllegalStateException( "Key file not present; find somebody with the file and place in: " + "src/main/resources/java/com/yourcompany/yourproject/keys/KeyFile.txt"); } private static String loadKey() { InputStream in = ProjectKey.class.getResourceAsStream("KeyFile.txt"); try { return in == null ? null : new Scanner(in, "UTF-8").next(); } finally { if (in != null) in.close(); } } }
在你的项目中创建一个名为'keys'或诸如此类的东西。在根目录下的.gitignore文件中,放置行/keys
以确保它们不会进入源代码管理。
如果您希望在缺少文件时构建失败,则必须使用某些构建工具插件。此外,如果'key'包含任何空格,你必须更新扫描仪的分隔符(我在这里使用扫描仪作为将输入流转换成完整字符串的最快方法;如果你有例如Guava,它有更好的调用要做到这一点,你应该使用那些)。
以上是关于存储密钥库密码的位置?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Android Studio 中检索已保存的密钥库密码?
如何使用带有密码的 SSH 密钥身份验证“去获取”私有存储库
markdown 如何使用SSH密钥验证而不是密码验证来“获取”私有存储库。