前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringCloud config配置文件加密

SpringCloud config配置文件加密

作者头像
叔叔
发布2018-04-11 12:59:34
1.8K0
发布2018-04-11 12:59:34
举报
文章被收录于专栏:叔叔的博客

一、前言

配置文件中,有些敏感数据需要加密处理。

SpringCloud config server可以结合jce实现这个功能。

二、配置

  1. 下载jce
代码语言:javascript
复制
http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
  1. 替换java_home/jre/lib/security下的两个jar包
  2. config server配置

配置文件添加

代码语言:javascript
复制
encrypt:
  key-store:
    alias: mytestkey
    location: server-rsa.jks
    password: pppppppp
    secret: ssssssss
  1. 测试加密解密

启动eureka、config-server

可以使用curl和postman测试/enrypt、/derypt,如果加密解密结果一致就没问题。

  1. 生成证书
代码语言:javascript
复制
keytool -genkeypair -alias mytestkey -keyalg RSA -dname "CN=Web Server,OU=Unit,O=Organization,L=City,S=State,C=US" -keypass ssssssss -keystore server-rsa.jks -storepass pppppppp

在文件夹找到生成的server-rsa.jks,复制到项目classpath。

  1. 配置中心

加密test 在rsatest-dev.yml添加以下内容

代码语言:javascript
复制
profile: '{cipher}AQCjXw/kh/GoWo/rjBB48ISnT1A74hsXg1AaVZRuOfJN0BmoiKSqJYtY/ivwe6mCOXTT3rb6ttI+fmz1zUYkjyomlU2owwz6uG6nBMuMSQdiS2ExMFGPfZwovfYbg/0IijxQ2+UDr51nNzDtTXAvAo6DhlkoCGC1MEHcRyakOg7SD1hYwUoAxls5A2v+8934iKIP2tVd+YEzHkDMYG5BS1XkiXLBV6ctVRerdlNO5XYqR7l9k8KP4uehTkZDYnuF3oJpf3ZMDHnimk9KH0KKgds3CC63X4bPPb9Ytetx/CrdZlpK9/VwQqe6b4HIu7KLM4TfsWKKiyI6n2jZ+8gEuLigfRovFQjCkG+EvMmMJKNDll/x0q47T2S1+CX4JXNAMd0='

{cipher}后的内容是待解密内容

  1. 访问配置

访问ip:port/rsatest-dev.yml

key-store配置正确情况下,可以看到profile: test

配置错误,会看到 invalid: profile:

三、拓展

1. git使用ssh登陆

因为git账号暴露也是不好的。

修改git配置

代码语言:javascript
复制
cloud:
    config:
      server:
        git:
          uri: git@gitee.com:unclehh/springcloudConfig.git
          searchPaths: repo

需要生成ssh

代码语言:javascript
复制
git config --global user.name “name”
git config --global user.email “email”
ssh-keygen -t rsa

在C:\user....sh\下会生出私钥文件id_rsa和公钥id_rsa.pub,复制id_rsa.pub的内容。

然后放到github或者其他git平台的ssh。

之后访问配置,会出现com.jcraft.jsch.JSchException: UnknownHostKey错。

需要在.ssh/下know_hosts文件添加公钥。

在linux上道理也是一样。

2. 另一种配置文件加密

jasypt安全框架继承springboot,可以实现配置加载前解密。

具体操作:

  1. 添加pom
代码语言:javascript
复制
 <dependency>
            <groupId>com.github.ulisesbocchio</groupId>
            <artifactId>jasypt-spring-boot-starter</artifactId>
            <version>1.16</version>
</dependency>
  1. demo
代码语言:javascript
复制
 // 密钥
    private static final String KEY = "1234567a?";
    public static void main(String[] args) {
        String ciphertext1 = encrypt("abcdefg"); // Wu11fsC0gpgSET5aU8GXUA==
        String ciphertext2 = encrypt("abcdefg"); // ESXlHsVk2YM7mGcHy2ccGg==
        System.out.println(ciphertext1);
        System.out.println(ciphertext2);
        String text1 = decrypt(ciphertext1);
        String text2 = decrypt(ciphertext2);
        System.out.println(text1);               // abcdefg
        System.out.println(text2);               // abcdefg
    }
    /**
     * 加密
     *
     * @param text 明文
     * @return 密文
     */
    public static String encrypt(String text) {
        StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
        encryptor.setPassword(KEY);
        return encryptor.encrypt(text);
    }
    /**
     * 解密
     *
     * @param ciphertext 密文
     * @return 明文
     */
    public static String decrypt(String ciphertext) {
        StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
        encryptor.setPassword("e!Jd&ljyJ^e4I5oU");
        return encryptor.decrypt(ciphertext);
    }
  1. 具体使用

配置加上

代码语言:javascript
复制
jasypt:
  encryptor:
    password: e!Jd&ljyJ^e4I5oU # 密钥
xxx: 
    password: ENC(jWgGELCkuxRuCI2Aqa6cF9VCxYpuKEZr)

ENC()里是待解密内容。

  1. 吐槽

虽然这种只是骗小孩子的一种方式,但是一眼看不懂明文密码还行。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-04-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 叔叔的博客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前言
  • 二、配置
  • 三、拓展
    • 1. git使用ssh登陆
      • 2. 另一种配置文件加密
      相关产品与服务
      微服务引擎 TSE
      微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档