当前位置: 首页 > 知识库问答 >
问题:

Spring云配置服务器GitHub SHA-1错误

微生宝
2023-03-14

这是关于Spring Cloud Config Server业余爱好项目(使用EnableConfigServer)。

昨天,应用程序可以启动了。

今天,由于Git通信错误,应用程序无法启动。

GitHub的官方博客中提到,自2022年3月15日起,不再支持SHA-1。这也解释了我这两天得到的结果。

2022年3月15日

永久性更改。

我们将永久停止接受DSA密钥。在上述截止点之后上载的RSA密钥将仅适用于SHA-2签名(但同样,在此日期之前上载的RSA密钥将继续适用于SHA-1)。不推荐使用的MAC、密码和未加密的Git协议将被永久禁用。

即使我没有删除现有的SSH键,它今天仍然无法启动。但是不管怎样,现在存储库设置的“部署键”部分下的唯一键是在2022年3月15日截止日期之后添加的SSH键。

依赖管理:

依赖关系:

<代码>应用程序。yml:

spring:
  cloud:
    config:
      server:
        git:
          ignore-local-ssh-settings: true
          uri: git@github.com:xxx/xxx.git
          private-key: |
                        -----BEGIN RSA PRIVATE KEY-----
                        (omitted)
                        -----END RSA PRIVATE KEY-----

所涉及的repo是一个GitHub专用repo,在“部署密钥”设置部分下配置了SSH密钥。

我一直在根据Spring Cloud Config官方留档生成SSH密钥对。

从控制台日志中,我看到:

错误:您在SHA-1中使用RSA密钥,不再允许使用。请使用较新的客户端或不同的密钥类型。有关详细信息,请参阅https://github.blog/2021-09-01-improving-git-protocol-security-github/。

这来自JGit作为一个组织。日食jgit。错误。NoRemoteRepositoryException(无存储异常)。

我尝试将Spring云依赖关系管理版本升级到Maven repository中可用的最新版本,即2021.0.1,因为它使用了较新版本的JGit。

然而,我仍然面临着同样的错误。

如果我只是切换到具有完全相同配置的GitLab,无论Spring Cloud依赖版本和JGit版本如何,它都可以正常工作。

如果我想使用GitHub,我还能做什么?

共有3个答案

公良照
2023-03-14

如果以前从本地主机使用过ssh,则应使用ecdsa命令更改RSA密钥:ssh-keygen-m PEM-t ecdsa-b 256和中的配置文件/ssh文件夹应如下所示

Host github.com
        User git
        Hostname github.com
        IdentityFile ~/.ssh/id_ecdsa

如果在属性文件中重写本地ssh:

spring:
  cloud:
    config:
      server:
        git:
          host-key:  this can be found in know hosts example  : AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIb...........
          host-key-algorithm: ecdsa-sha2-nistp256
          ignore-local-ssh-settings: false
          private-key: |
                       -----BEGIN EC PRIVATE KEY-----
                       .................
                       .................
                       .........................
                       -----END EC PRIVATE KEY-----

裁判:https://github.com/spring-cloud/spring-cloud-config/issues/2061#issuecomment-1070779477

和弘博
2023-03-14

我也有同样的问题。

看见https://github.com/spring-cloud/spring-cloud-config/issues/2061

目前,我有一个棘手的解决方法:使用https uri、用户名和密码(可能是个人秘密令牌)。

spring:
  cloud:
    config:
      server:
        git:
          uri: https://github.com/org/repo
          username: ...
          password: ...
赵渊
2023-03-14

使用scs v2测试以下内容。1.

使用ecdsa:

获取主机密钥

ssh-keyscan -t ecdsa github.com
# github.com:22 SSH-2.0-babeld-4f04c79d
github.com ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEmKSENjQEezOmxkZMy7opKgwFB9nkt5YRrYMjNuG5N87uRgg6CLrbo5wAdT/y6v0mKV0U2w0WZ2YB/++Tpockg=

生成新密钥

ssh-keygen -t ecdsa -b 256 -m PEM

将生成的公钥添加到github repo的部署密钥中。

使用主机密钥、主机密钥算法和生成的私钥创建或更新配置服务器。

cf create-service p-config-server standard <config-server-name> -c '{"git": { "uri": "git@github.com:<repo>.git", "privateKey": "<generated_key>", "hostKey": "AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEmKSENjQEezOmxkZMy7opKgwFB9nkt5YRrYMjNuG5N87uRgg6CLrbo5wAdT/y6v0mKV0U2w0WZ2YB/++Tpockg=","hostKeyAlgorithm": "ecdsa-sha2-nistp256"} }'
 类似资料:
  • 我正在使用Spring Cloud Config服务器,能够检测来自git存储库的更改并将其传递给配置客户机。 有两种方法,我已经实现了: null 所以两者都工作得很好,那么使用Spring Cloud Bus有什么好处吗?或者在生产环境中,不使用Spring Cloud Bus会有什么问题吗?因为将需要额外的工作来设置RabbitMQ集群(HA)作为生产中的Spring云总线。 谢谢,大卫

  • 我正在尝试创建SpringCloudConfigServer,以便使用SSHURI连接到git存储库(bitbucket)。我正在关注Spring云配置 我使用ssh-keygen实用工具生成了密钥对,并粘贴了。发布文件内容在我的bitbucket帐户的ssh部分,但当我运行作为spring启动应用程序的服务器时,我得到无效的privateKey异常。 我也使用了这个堆栈溢出帖子中提供的建议,但是

  • 我正在使用Spring Cloud配置服务器,我需要为每个阶段的产品测试和开发创建一个配置文件,我已经为默认配置文件创建了4个yml文件application.yml,为每个配置文件创建了应用程序-{配置文件},所以我的问题是如何通过环境变量加载特定的配置,并在每个配置文件配置和端口上运行配置服务器,我已经创建了一个bootstrap.yml但我不能解决这个问题。如果有人能指导我完成这些步骤来满足

  • 将配置服务器用户名和密码存储为环境变量(在客户端和服务器中)还是使用密钥库更好?密钥库密码无论如何都存储为环境变量,那么为什么实际使用密钥库呢?还是有更好的方法在SpringCloudConfig服务器中实现身份验证?

  • 我正在设置一个Spring启动云配置服务器,它使用VAULT来存储秘密。 保管库身份验证机制设置为AWS_IAM。我的类路径中也有aws-java-sdk。aws cli也被配置。 当我向配置服务器发出请求时,我能够从VAULT中获取机密,但第一次请求除外 对配置服务器的第一个请求失败,因为它试图安排任务在到期后续订vault令牌(来自vault响应) 应用程序中的配置。性质 错误日志是

  • 我有一个使用SpringCloud配置的Spring Boot应用程序,我正在尝试从Bitbucket获取应用程序的配置文件。前一段时间我可以获取配置文件,但现在我在尝试通过配置服务器url访问时出错。 应用yml: 当我试图访问网址的应用程序显示一个错误-未授权: 有人知道发生了什么吗?我已经检查了bitbucket上的所有凭据和url。