码迷,mamicode.com
首页 > 数据库 > 详细

关于druid数据库密码加密流程及问题

时间:2017-06-08 13:07:15      阅读:1005      评论:0      收藏:0      [点我收藏+]

标签:bcp   默认   common   new   publickey   数据库   master   解释   comm   

最近项目中需要在配置中将数据库密码加密,就使用了阿里的druid来实现,将流程和问题和大家分享一下。

项目使用的是Spring加jetty,原先数据库连接使用的是Apache的DBCP:commons-dbcp2-2.1.1.jar+ojdbc6.jar

配置:<New class="com.alibaba.druid.pool.DruidDataSource">
            <Set name="driverClassName">oracle.jdbc.driver.OracleDriver</Set>
            <Set name="url">jdbc:derby:memory:spring-test;create=true</Set>
            <Set name="username">test123</Set>            
            <Set name="password">test123</Set>      
            <Set name="validationQuery">select 1 from dual</Set>           
         </New>

改成druid:druid-1.0.13.jar+ojdbc6.jar

配置:(只需将class修改为com.alibaba.druid.pool.DruidDataSource)

  <New class="com.alibaba.druid.pool.DruidDataSource">
            <Set name="driverClassName">oracle.jdbc.driver.OracleDriver</Set>(不配也可以,会根据url自动识别)
            <Set name="url">jdbc:derby:memory:spring-test;create=true</Set>
            <Set name="username">test123</Set>            
            <Set name="password">OkBVtGCZIhSXT7Fcg==</Set>
            <Set name="filters">config</Set>
            <Set name="connectionProperties">config.decrypt=true</Set>    
            <Set name="validationQuery">select 1 from dual</Set>
            <Call name="init"/>
         </New>

以上配置的解释:其他的参数配置不详述,重点解释数据库密码加密

    1.password:使用命令java -cp druid-1.0.13.jar com.alibaba.druid.filter.config.ConfigTools you_password来生成密码

    每次执行生成的密文是不一样的

    如果使用的是druid-1.0.31.jar会生成privateKey、passwordKey和publicKey,配置需改成

     <Set name="password">OkBVtGCZIhSXT7Fcg==</Set><!-- 生成的passwordKey -->
            <Set name="filters">config</Set>
            <Set name="connectionProperties">config.decrypt=true;config.decrypt.key=DSDFGTGETGsd</Set>  <!-- 生成的publicKey-->(不改也可以,有默认)

    2.filters:配置监控

    3.connectionProperties:config.decrypt=true提示Druid数据源需要对数据库密码进行解密

    4. <Call name="init"/>:必须配置这个方法。

    在https://github.com/alibaba/druid/tree/master下载源码项目导入工程中,debug源码之后发现参数都能接收进去,但是不去执行解密的操作,一直报错用户名\口令无效,登录被拒绝,加上这个方法配置之后能走通

其他相关的问题可参考https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98

        https://github.com/alibaba/druid/wiki/%E4%BD%BF%E7%94%A8ConfigFilter

配置好之后,报错package oracle.jdbc.driver is sealed,数据库的包被加密,一般情况是jar包冲突。

排查了好久终于在一个war包中找到ojdbc7.jar,去除7之后,终于能正常运行了。

 

关于druid数据库密码加密流程及问题

标签:bcp   默认   common   new   publickey   数据库   master   解释   comm   

原文地址:http://www.cnblogs.com/nstart/p/6962011.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!