zoukankan      html  css  js  c++  java
  • 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=

    剩下的和上面一样

  • 相关阅读:
    web Function函数
    web语言发展史
    用户正则
    字符串替换
    css单位
    JavaScript DOM&BOM
    css颜色的设置
    pseudo-class与pseudo-element的不同点与相同点
    对css语法中position值的理解
    API
  • 原文地址:https://www.cnblogs.com/chenglc/p/10142079.html
Copyright © 2011-2022 走看看