springCloud_config_git倉庫私鑰配置

使用config配置中心

1. 使用本地配置

需要聲明, spring.profiles.active=native, 這種就是使用本地配置;
缺點:

不能實時刷新配置文件, 使用actuator 的 /refresh 接口來刷新, 是重新從config配置中心中獲得, 刷新的是客戶端的配置文件;
config配合中心的配置文件如果修改了, 需要重啓才能刷新, 每次修改完配置文件都需要重啓config配置中心才行;*

詳細配置信息如下:

spring:
  profiles:
    active: native   # 啓動本地配置文件, set Git URI in your configuration
  cloud:
    config:
      server:
        native:
          search-locations: classpath:/test01
2. 使用git倉庫, 用戶名密碼配置;

使用git的用戶名和密碼, 登錄來拉取倉庫信息, 主要是uri, basedir, username, 和 password 四個必填的屬性值, uri可以使用ssh的鏈接;
注意: 如果缺少, 拉取的本地路徑basedir會等不到配置文件;

詳細配置信息如下:

spring:
  cloud:
    config:
      server:
        git:
          uri: https://github.com/username/config
          basedir: E:\git\config
          username: username
          password: password
          search-paths: test01,test02
3. 使用git倉庫, 私鑰配置:
使用用戶名密碼配置的方式, 將密碼寫在配置文件中總是不太好, 也可以使用私鑰的配置方式;
1. 創建一個私鑰, 
2. 配置config配置中心;
spring:
  cloud:
    config:
      server:
        git:
          uri: [email protected]:credit/config.git
          basedir: E:\git\config
		  passphrase: ******  # 私鑰的口令, 沒有可以不配置

注意:

  1. 沒有username, 和 password屬性, 如果username沒有去掉, 會默認走用戶名密碼的方式, 導致, password屬性沒有找到, 報錯訪問不到;
  2. 私鑰讀取的是默認位置 ~/.ssh/id_ras, 如果有多個私鑰自行配置 ~/.ssh/config 文件
  3. 私鑰的產生方式 使用命令 ssh-keygen -m PEM -t rsa -b 4096
    這幾個參數是必須的;
4. 使用私鑰配置在文件中

還有一種是將私鑰寫在配置文件中, 不讀取本地的私鑰
注意使用換行符保持格式相同

spring.cloud.config.server.git.ignore-local-ssh-settings=true
spring.cloud.config.server.git.private-key="\
-----BEGIN RSA PRIVATE KEY-----\n
b3BlbnNzaC1rZXktdjEAAAAAtskoQN1tcvvYAovZ9/eZLq2+Ix
.......
qsY+JZs6Frc\n
dV5LJLLlyM9eb9omlwAAAApsaXpoZW5
naHVpAQIDBAUGBw==\n
-----END RSA PRIVATE KEY-----"

官方提供的是yml文件的書寫格式, 嘗試使用但是報錯, 私鑰格式不正確, 沒有找到原因
錯誤代碼
產生這個的原因是: 生成私鑰的方式不對,
一般使用ssh-keygen生成的私鑰開頭都是

-----BEGIN OPENSSH PRIVATE KEY-----
b2MnBmKZ....wCJpSr95c
-----END OPENSSH PRIVATE KEY-----

但是spring官方提供的私鑰方式是RSA如下格式

-----BEGIN RSA PRIVATE KEY-----
b2MnBmKZ....wCJpSr95c
-----END RSA PRIVATE KEY-----

所以會提示格式不正確, 使用下面命令解決私鑰可以解決問題

ssh-keygen -m PEM -t rsa -b 4096 -f ./test02

-m 參數指定密鑰的格式,PEM(也就是RSA格式)是之前使用的舊格式
-b:指定密鑰長度;
-e:讀取openssh的私鑰或者公鑰文件;
-C:添加註釋;
-f:指定用來保存密鑰的文件名;
-i:讀取未加密的ssh-v2兼容的私鑰/公鑰文件,然後在標準輸出設備上顯示openssh兼容的私鑰/公鑰;
-l:顯示公鑰文件的指紋數據;
-N:提供一個新密語;
-P:提供(舊)密語;
-q:靜默模式;
-t:指定要創建的密鑰類型

補充:

spring.cloud.config.server.svn.search-paths=test01,test02
  1. 當項目過多的時候, 將配置文件拆分的子目錄中, 就需要用到該參數,
    如果不配置, 默認掃描根目錄下的配置文件;
  2. 使用application爲文件名稱的配置文件, 裏面是公共的配置信息不管是在哪個子目錄下都會掃描到, 都會公共使用;
  3. application-{profiles}.yml(properties) 這個文件中會對所有的*-{profiles}.yml 文件的公共信息, 所有的指定環境的都會生效;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章