spring cloud config 属性加解密

spring cloud config 属性加解密

首先需要(Java Cryptography Extension (JCE))的支持,下载路径:

https://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html

在jdk的安装目录下/jre/lib/security,做文件替换

在config server的配置里加入

encrypt:
  key: 1112

加密需要key

然后启动项目,在命令行执行curl

curl -X POST http://127.0.0.1:8888/encrypt -d mysecret

要加密的信息放最后,运行出来的结果就是加密后的字符串

7de875ef75b01957a512240c1863106a84b3344aadfa5aec2b2e4cd75478f703

需要解密的话,运行命令:

 

curl -X POST http://127.0.0.1:8888/decrypt -d 7de875ef75b01957a512240c1863106a84b3344aadfa5aec2b2e4cd75478f703

 

mysecret

使用加密加密到应用程序中:

application.properties
spring.datasource.username: dbuser
spring.datasource.password: {cipher}FKSAJDFGYOS8F7GLHAKERGFHLSAJ

application.yml

spring:
  datasource:
    username: dbuser
    password: '{cipher}FKSAJDFGYOS8F7GLHAKERGFHLSAJ'

请注意其中的差别

而客户端正常使用即可。

 

依赖:

       <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

,可能暴露的问题:

{
    "timestamp": 1545212081503,
    "status": 401,
    "error": "Unauthorized",
    "message": "Full authentication is required to access this resource",
    "path": "/encrypt/status"
}

没有权限,

问题原因:

security:
  basic:
    enabled: true #默认值是true
  user:
    name: user
    password: 123

解决办法:

enabled=false

 

以上为对称的加解密,以下讲解非对称加解密:

非对称选择在安全性方面是优越的,但是使用对称密钥往往更方便,因为它只是配置的一个属性值。

要创建一个密钥库进行测试

keytool -genkeypair -alias mytestkey -keyalg RSA \
  -dname "CN=Web Server,OU=Unit,O=Organization,L=City,S=State,C=US" \
  -keypass changeme -keystore server.jks -storepass letmein

在windows系统如果执行失败,将命令中的 \ 去掉,此为linux系统中的换行符;

如果对此命令有兴趣,可参考以下

 -alias <alias>                  要处理的条目的别名
 -keyalg <keyalg>                密钥算法名称
 -keysize <keysize>              密钥位大小
 -sigalg <sigalg>                签名算法名称
 -destalias <destalias>          目标别名
 -dname <dname>                  唯一判别名
 -startdate <startdate>          证书有效期开始日期/时间
 -ext <value>                    X.509 扩展
 -validity <valDays>             有效天数
 -keypass <arg>                  密钥口令
 -keystore <keystore>            密钥库名称
 -storepass <arg>                密钥库口令
 -storetype <storetype>          密钥库类型
 -providername <providername>    提供方名称
 -providerclass <providerclass>  提供方类名
 -providerarg <arg>              提供方参数
 -providerpath <pathlist>        提供方类路径
 -v                              详细输出
 -protected                      通过受保护的机制的口令

 

运行后会生成server.jks文件,

server.jks文件放在类路径(例如)中,然后在您的application.yml中配置服务器:

encrypt:
  keyStore:
    location: classpath:/server.jks
    password: letmein
    alias: mytestkey
    secret: changeme

 

启动项目,运行命令

curl -X POST http://127.0.0.1:8888/encrypt -d 密文

AQArkCDzEKT2rJU9U+7msxdFvNqZeerM0q0zd7RJ9tyejlvzdo0eDIU6PeU693OszLI8TJ0aNPiZPkWeMJMVdO+kL8lo3EdNjQoYNpGd4sayIzhB71+0NwMKX9xqDzkZ8wz4UW8Q5qXDw1Dsj5VlmOjLD5kh+z21JNGT+EeK2ScWY2KCiy/vtUXm2ajOF5vpBWXINgvnb4+BToy8xyNbDqAORi1YehPXBdw1gEnH9c0w0uhl2dQU1MUT4+YcuaHCFOsUKJnPvxh/6cZFlvsAw1o5cT3f/fvLj3+i5VGrtx0Nu0Gn+OizrjvZ5dugS1Swjtdo+VQ5T5ONT2JxWeVBGjOW+Sxn71cJvzvDQZVkNTp9UeSVdudL23a2PGTU8fm4m94=

 

剩下的和上面一样

 

posted @ 2018-12-19 11:16 路迢迢 阅读( ...) 评论( ...) 编辑 收藏
Spring Cloud Config提供了对加密和解密的支持。它使用对称密钥加密算法来加密属性值。在客户端,您可以使用相同的密钥来解密属性值。下面是Spring Cloud Config加解密的步骤: 1. 生成密钥 ```shell keytool -genkeypair -alias mytestkey -keyalg RSA \ -dname "CN=Web Server,OU=Unit,O=Organization,L=City,S=State,C=US" \ -keypass changeme -keystore server.jks -storepass letmein ``` 这将生成一个名为server.jks的密钥库文件。 2. 配置加密 在Spring Cloud Config Server中,您需要在application.properties文件中配置加密相关的属性: ```properties encrypt: key-store: location: classpath:/server.jks password: letmein alias: mytestkey secret: changeme ``` 这将配置Spring Cloud Config Server使用server.jks密钥库文件来加密属性值。 3. 配置客户端 在Spring Cloud Config Client中,您需要在bootstrap.properties文件中配置解密相关的属性: ```properties decrypt: key-store: location: classpath:/server.jks password: letmein alias: mytestkey secret: changeme ``` 这将配置Spring Cloud Config Client使用server.jks密钥库文件来解密属性值。 4. 加密属性Spring Cloud Config Server中,您可以使用以下命令来加密属性值: ```shell curl localhost:8888/encrypt -d mysecretpassword ``` 这将返回加密后的属性值。 5. 解密属性Spring Cloud Config Client中,您可以使用以下命令来解密属性值: ```shell curl localhost:8080/myapp/mysecretpassword | openssl rsautl -decrypt -inkey private.pem ``` 这将返回解密后的属性值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值