【问题标题】:How to add public key identity from String?如何从字符串添加公钥身份?
【发布时间】:2022-10-07 16:59:21
【问题描述】:

我有一个带有Apache SSHD 的 Spring Boot 应用程序。应用程序应使用SSH Public Key Authentication。因此,应用程序需要一个私钥。如何提供这个私钥?

出于安全原因,私钥不应保存在

  • 源代码(在 Git 中)
  • 类路径(在 JAR 中)
  • 图像(在 Docker 注册表中)
  • 主机/卷(使用 Docker 挂载)

相反,私钥应作为环境变量提供(使用 GitLab)。

文档

在文档中只是保存在文件系统中的私钥的示例,请参阅Loading key files

加载密钥文件

为了使用无密码身份验证,用户需要提供一个或多个KeyPair-s,用于“证明”服务器的客户端身份。该代码支持大多数(如果不是全部)当前使用的密钥文件格式。有关如何加载文件的示例,请参见 SshKeyDumpMain 类 - 基本上:

KeyPairResourceLoader loader = SecurityUtils.getKeyPairResourceParser();
Collection<KeyPair> keys = loader.loadKeyPairs(null, filePath, passwordProvider);

研究

我可以按照create java PrivateKey and PublicKey from a String of file 中的描述创建KeyPair,但是我会重新实现Apache SSHD 的现有部分。我必须支持所有当前使用的密钥文件格式。

问题

如何从String而不是文件系统加载私钥?

    标签: ssh-keys apache-sshd


    【解决方案1】:

    我找到了一种使用String 而不是文件的方法,请参阅KeyPairResourceLoader#loadKeyPairs

    default Collection<KeyPair> loadKeyPairs(SessionContext session,
                                        NamedResource resourceKey,
                                        FilePasswordProvider passwordProvider,
                                        String data)
                                 throws IOException,
                                        GeneralSecurityException
    

    抛出:
    IOException
    GeneralSecurityException

    我更改的代码:

    KeyPairResourceLoader loader = SecurityUtils.getKeyPairResourceParser();
    Collection<KeyPair> keyPairCollection = loader.loadKeyPairs(null, null, null, pem);
    

    【讨论】:

      猜你喜欢
      • 2021-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-15
      • 2012-01-18
      • 2013-06-09
      • 1970-01-01
      • 2021-04-17
      相关资源
      最近更新 更多