Spring cloud Config 對稱加密

1.JCE 加密

JCE(Java Cryptography Extension)是一組包,它們提供用於加密、密鑰生成和協商以及 Message Authentication Code(MAC)算法的框架和實現。
它提供對對稱、不對稱、塊和流密碼的加密支持,它還支持安全流和密封的對象。它不對外出口,用它開發完成封裝後將無法調用。

2. JCE 配置過程

  1. 根據自己的 JDK 版本去下載相對應的壓縮包,我用的 jdk 1.8 ,點我下載

  2. 下載下來的 zip 包解壓,得到 local_policy.jar 和 US_export_policy.jar。

  3. 先 備份 javahome 路徑下 jre/lib/security 的 local_policy.jar 和 US_export_policy.jar,然後把下載的兩個文件複製到該路徑下。

  4. spring cloud 配置中心的服務,查看加密的狀態:
    localhost:10000/encrypt/status
    這個時候系統返回的 報錯信息是:

    {
      "description": "No key was installed for encryption service",
      "status": "NO_KEY"
    }
    
  5. 在 yml 中配置上祕鑰:

    encrypt:
        key: 123
    

    重啓服務,然後重新驗證,返回結果:

    {
      "status": "OK"
    }
    
  6. 加密
    curl -X POST http:/localhost:10000/encrypt -d mysqladmin

    返回的加密信息:8354721c6ae911dbb71866e88612bef9beab3a035d41b703fe9ecc4014237f8f

  7. 解密
    curl -X POST http:/localhost:10000/decrypt -d 8354721c6ae911dbb71866e88612bef9beab3a035d41b703fe9ecc4014237f8f

    返回解密信息:mysqladmin

  8. 在配置文件中使用加密信息:

    spring:
         durid:
             password:
    '{cipher}8354721c6ae911dbb71866e88612bef9beab3a035d41b703fe9ecc4014237f8f'
    

遇到的問題

  • Mac OS 要怎麼配置 JCE?

    mac 的 javaHome/jre/lib/security 下面並沒有 local_policy.jar 和 US_export_policy.jar。 如下圖所示
    mac_jce
    把下載的兩個 jar 包直接替換到 unlimited 中的兩個 jar 包。但是之前試了好久一直都沒有效果, 然後又突然好了……不懂不懂

  • 加密到靠不靠譜?

    在配置加密之後, 重新啓動服務, 服務是可以完成正常的 CRUD 的,這也 意味着我們的加密是完全可用的。但是如果我直接讀取數據的密碼呢?

    @RestController
    @RefreshScope
    @Slf4j
    public class TestController {
      @Autowired UserService userService;
    
      @Value("${spring.durid.password}")
      private String hello;
    
      @GetMapping("/hello")
      public String from() {
        return this.hello;
      }
    
      @PostMapping("/add/user")
      public User addUser(@RequestBody User user) {
        log.info("user={}", user);
        return userService.insert(user);
      }
    }
    

    訪問 hello 方法,返回的數據庫密碼是解密的。。。突然又迷失了方向,我是在幹什麼? 不管我用什麼祕鑰, 用什麼密碼,都可以被服務端一部獲取到服務密碼。算了, 希望他們不要去 直接獲取數據庫密碼:(

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章