如何加密Solr的DataInputHandler(DIH)使用的数据库密码?

时间:2017-10-18 21:35:55

标签: encryption solr cryptography

如果您打开此文档:

https://lucene.apache.org/solr/guide/6_6/uploading-structured-data-store-data-with-the-data-import-handler.html

关于如何在数据导入配置XML中加密数据库密码,有一个非常难以理解的描述:

  

或者,可以按如下方式加密密码。这是由命令openssl enc -aes-128-cbc -a -salt -in pwd.txt password =“U2FsdGVkX18QMjY0yfCqlfBMvAB4d3XkwY96L7gfO2o =”获得的值。密码加密后,您必须提供额外的属性encryptKeyFile =“/ location / of / encryptionkey”。该文件应该是一个包含加密/解密密码的单行文本文件。

有人可以帮助我将其分解为实际需要遵循的步骤吗?

3 个答案:

答案 0 :(得分:1)

这仅适用于Solr 5.1和6 +

  1. 打开终端并运行:openssl enc -aes-128-cbc -a -salt -md md5 -in pwd.txt
  2. - >这假定pwd.txt是保存在文本文件中的密码,所以这是一个例子:

    echo "my password" > pwd.txt
    openssl enc -aes-128-cbc -a -salt -md md5 -in pwd.txt
    enter aes-128-cbc encryption password: myencryptfilepwd
    Verifying - enter aes-128-cbc encryption password: myencryptfilepwd
    U2FsdGVkX1/zZp+RS3oim80coh80ARe8l+EF+w0La0TKRfNpZ4+smdokcV3zYyLm
    
    1. 将上面输入的密码保存到文件中:echo "myencryptfilepwd" > "/location/of/encryptionkey"

    2. /location/of/encryptionkey保存到Solr服务器和chmod 0600以保护内容。

    3. 将openssl enc调用的结果添加到password并将encryptKeyFile路径设置为DIH xml文件:<dataSource driver="org.hsqldb.jdbcDriver" url="jdbc:hsqldb:./example-DIH/hsqldb/ex" user="sa" password="U2FsdGVkX1/zZp+RS3oim80coh80ARe8l+EF+w0La0TKRfNpZ4+smdokcV3zYyLm" encryptKeyFile="/location/of/encryptionkey" />

    4. 如果您已正确完成此操作,Solr DIH应该能够使用加密密码。

答案 1 :(得分:1)

FYI, 我遇到了一些问题,在dataConfig中获取密码和encryptKeyFile工作。

运行echo命令时,请务必使用echo -n以确保没有EOL字符。

更多信息: https://www.daniweb.com/programming/threads/510043/solr-dataimport-handler-encrypted-pwd-final-block-not-properly-padded

答案 2 :(得分:1)

根据https://issues.apache.org/jira/browse/SOLR-11690

  

openssl将消息摘要默认值从MD5更改为SHA256   (https://github.com/openssl/openssl/issues/2206),但Solr使用MD5,因此   正确的密码加密命令必须包含-md md5

因此: openssl enc -aes-128-cbc -a -salt -md md5 -in pwd.txt

使它对我有用。