700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Druid数据库配置密码加密openssl生成和代码生成两种方案

Druid数据库配置密码加密openssl生成和代码生成两种方案

时间:2024-05-18 00:06:35

相关推荐

Druid数据库配置密码加密openssl生成和代码生成两种方案

方案一:openssl生成秘钥并加密

1.生成私钥PKCS#1

openssl genrsa -out private_key.pem 2048

2.从私钥中提取出公钥

openssl rsa -pubout -in private_key.pem -out public_key.pem

3.对第一步中生成的PKCS#1私钥进行编码生成PKCS#8的私钥

openssl pkcs8 -topk8 -inform PEM -in private_key.pem -outform PEM -nocrypt -out private_key_pkcs8.pem

4.新建security.txt文件,将密码添加到文件中,对字文件签名

#将密码123写入security.txt文件echo 123>security.txt#对密码文件进行签名openssl rsautl -sign -inkey private_key_pkcs8.pem < security.txt > sign.txt

上述名利签名的密码会默认带一个换行符\n,这样的话oracle数据库可以在连接的时候自动去除,但是mysql就嗝屁了,如何去除换行符,命令如下:

cat security.txt | tr -d '\n' | openssl rsautl -sign -inkey private_key_pkcs8.pem > sign.txt

5.验证签名是否正确,输出文件与签名源文件相同则说明签名正确

openssl rsautl -verify -inkey public_key.pem -keyform PEM -pubin -in sign.txt > security_bak.txt

6.将签名转换成base64字符串,此字符串即密码签名

base64 sign.txt

方案二:Java代码生成秘钥并加密

public static void main(String[] args) throws NoSuchAlgorithmException, NoSuchProviderException {String password = "123";String[] arr = genKeyPair(512);System.out.println("privateKey:" + arr[0]);System.out.println("publicKey:" + arr[1]);System.out.println("password:" + encrypt(arr[0], password));}

数据库consul配置文件做如下修改

使用密码签名字符串修改如下密码配置(embase替换为对应数据库标识):

spring.emily.datasource.druid.mysql.password=密码签名字符串

新增如下配置,需将公钥替换为对应环境的公钥(embase替换为对应数据库标识):

#秘钥属性配置 spring.emily.datasource.druid.mysql.connection-properties=config.decrypt=true;config.decrypt.key=${spring.emily.datasource.druid.mysql.public-key}#回调类spring.emily.datasource.druid.mysql.password-callback-class-name=com.alibaba.druid.util.DruidPasswordCallback#开启配置过滤器,用来读取公钥spring.emily.datasource.druid.mysql.filters=config#公钥spring.emily.datasource.druid.mysql.public-key=公钥#设置JDBC驱动执行Statement语句的秒数,如果超过限制,则会抛出SQLTimeoutException,默认:0 单位:秒 无限制spring.emily.datasource.druid.mysql.query-timeout=10#设置JDBC驱动执行N个Statement语句的秒数(事务模式),如果超过限制,则会抛出SQLTimeoutException,默认:0 单位:秒 无限制spring.emily.datasource.druid.mysql.transaction-query-timeout=10

GitHub地址:/mingyang66/spring-parent

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。