• 隐藏java代码中 连接数据库、redis等含密码信息方法【配置文件信息安全加密】


    ###

    1、需求背景

    当前项目中的数据库密码、Redis密码、第三方服务 OSS 等的 secret 都是直接明文暴露在配置文件中的,从安全性的角度,非常不建议这么做,因此需要对关键的敏感配置信息进行加密。

    2、实现方案

    采用第三方的开源库 `Jasypt` 来实现配置文件资源的加解密,加密方式为 `对称加密`。配置文件中配置加密后的密文,`Jasypt` 会自动的解析配置文件并解密。

    3、操作步骤

    3.1、jasypt 官网| jar 包 下载

    官网地址:
      http://www.jasypt.org/
    官网下载地址:
      https://github.com/jasypt/jasypt/tags 本文使用jar下载地址:   https:
    //files.cnblogs.com/files/faithH/jasypt-1.9.2.zip

    3.2、上传jasypt 到本地服务器任意目录进行加密操作

    [root@test jasypt_jar_dir]# pwd
    /root/jasypt_jar_dir
    [root@test jasypt_jar_dir]# ll
    total 128
    -rw-r--r-- 1 root root 129265 Dec  7 18:20 jasypt-1.9.2.jar
    #=============================
    [root@test02 jasypt_jar_dir]# java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI password=pro_connect_mysql_private_key algorithm=PBEWithMD5AndDES input=mysql_passwd_123123
    
    ----ENVIRONMENT-----------------
    
    Runtime: Oracle Corporation Java HotSpot(TM) 64-Bit Server VM 25.191-b12
    
     
    
    ----ARGUMENTS-------------------
    
    input: mysql_passwd_123123
    algorithm: PBEWithMD5AndDES
    password: pro_connect_mysql_private_key
    
     
    
    ----OUTPUT----------------------
    
    cWa9MZzussN4rJ+4ia1C4vVHzhmg8j5bEkeNucgVUqY=
    [root@test jasypt_jar_dir]# 
    
    # 加密时只需要将上面命令中的 password 和 input 替换对应的值即可。
    # password=pro_connect_mysql_private_key:此处需要运维同学指定(java进程中需要的私钥信息 - 不可泄露) ***
    # 将OUTPUT加密后的秘闻提供给研发同学即可

    3.3、加密命令 - 参数详解

    加密入口类:org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI
    input:要加解密的字符串
    password:密钥口令
    algorithm:加密算法
    OUTPUT:加密后的密文    

    4、java进程启动时引入私钥信息

    java -javaagent:/home/wx/apache-skywalking-apm-bin-es7/agent/skywalking-agent.jar -Dskywalking_config=/home/wx/apache-skywalking-apm-bin-es7/agent/config/es-provider-quartz.config \
    -Duser.timezone=Asia/Shanghai -server -Xms2g -Xmx2g -Xmn512m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m \
    -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/wx/services/es-provider-quartz/logs/heapdump.hprof -XX:+PrintGCDateStamps \
    -XX:+PrintGCDetails -Xloggc:/tmp/gc_logs/gc.log -XX:+UseParallelGC -XX:+UseParallelOldGC \
    -jar es-provider-quartz.jar \
    --spring.cloud.nacos.config.server-addr=10.1.3.169:8848 --spring.cloud.nacos.discovery.server-addr=10.1.3.169:8848 \
    --jasypt.encryptor.password=pro_connect_mysql_private_key \
    --spring.profiles.active=pro

    # 上述启动java进程后 可解密OUTPUT公钥信息,此时完成java的连接信息加密

    ###

  • 相关阅读:
    easyui combobox 实现联动
    smartWizard 和 uploadify 插件
    easyui panel href 引用页面导致的命名冲突问题
    Installshield 多语言安装包 和 安装序列号验证,及如何解决 Failed to set code page for Language 46 问题
    easyui 之tab和portal 在IE9下使用iframe时报未定义错误的解决方法
    easyui datagrid 动态列和前端分页,以及加载Datatable
    easyui 动态创建模式对话框
    移动硬盘一个分区“数据循环冗余错误”要求格式化解决方法
    easyui 开发中的通用类库
    easyui datagrid 工具栏实现方式
  • 原文地址:https://www.cnblogs.com/faithH/p/15657707.html
Copyright © 2020-2023  润新知