破解x-pack 6.0及更新许可
背景
安装X-Pack时,默认会有30天的试用许可证,试用期结束后会无法访问,这时就需要到官网申请一年的免费license,所以。。。。
破解x-pack
用破解的x-pack-6.0.0.jar替换/usr/local/elk/elasticsearch-6.0.0/plugins/x-pack/目录中原有的x-pack-6.0.0.jar包,
如果还没有安装x-pack,可以把从官网上下载的x-pack-6.0.0.zip包中的x-pack-6.0.0.jar替换掉,然后用替换后的x-pack-6.0.0.zip进行安装。
/usr/local/elk/elasticsearch-6.0.0/为elasticsearch的安装目录
不要在windows下进行压缩解压缩
反编译class文件
mkdir test # 新建测试目录
mv /usr/local/elasticsearch/plugins/x-pack/x-pack-6.0.0.jar test/ # 移动jar包到测试目录
cd test/ # 切换到测试目录
jar -xvf x-pack-6.0.0.jar # 解压jar包
rm x-pack-6.0.0.jar # 移除jar包
找到test/org/elasticsearch/license/LicenseVerifier.class文件,并用Luyten反编译,并拷贝内容到新建的文件LicenseVerifier.java中,内容如下:
package org.elasticsearch.license;
public class LicenseVerifier
{
public static boolean verifyLicense(final License license, final byte[] encryptedPublicKeyData) {
return true;
}
public static boolean verifyLicense(final License license) {
return true;
}
}
重新编译LicenseVerifier.java:
javac -cp "/usr/local/elk/elasticsearch-6.0.0/lib/elasticsearch-6.0.0.jar:/usr/local/elk/elasticsearch-6.0.0/lib/lucene-core-7.0.1.jar:/usr/local/elk/elasticsearch-6.0.0/plugins/x-pack/x-pack-6.0.0.jar" LicenseVerifier.java
替换原有的class文件:
cp LicenseVerifier.class /usr/local/elk/elasticsearch-6.0.0/plugins/x-pack/test/org/elasticsearch/license/
重新打jar包:
cd /usr/local/elk/elasticsearch-6.0.0/plugins/x-pack/test/
jar -cvf x-pack-6.0.0.jar ./*
覆盖原来x-pack的jar包:
mv x-pack-6.0.0.jar :/usr/local/elk/elasticsearch-6.0.0/plugins/x-pack/
更新许可
去官网申请免费license,会发邮件给你进行下载;
将下载的文件重命名为license.json,并做如下修改:
"type":"platinum" #白金版
"expiry_date_in_millis":2524579200999 #截止日期 2050年
然后将修改好的文件上传到服务器的任意目录,然后在该目录中执行如下命令:
curl -XPUT -u elastic 'http://192.168.20.101:9200/_xpack/license' -H "Content-Type: application/json" -d @license.json
或者
curl -XPUT -u elastic 'http://192.168.20.60:9200/_xpack/license?acknowledge=true' -H "Content-Type: application/json" -d @license.json
官方文档:https://www.elastic.co/guide/en/x-pack/6.0/installing-license.html
elasticsearch 6.0.0更新license文件时,要么配置SSL\TLS,要么就禁用security
禁用:配置elasticsearch.yml,加入:
xpack.security.enabled: false
更新完license后如果开启security,配置传输层安全性(TLS / SSL)。(如果您拥有非试用许可证并且想要使用X-Pack安全性,则必须配置TLS以进行节点间通信。)
最后重启elasticsearch。
查看license状态:
curl -XGET -u elastic "http://192.168.20.101:9200/_license"
或者在kibana中查看:
更新时遇到的问题:(忘记了elastic用户的密码)
安装完x-pack时通过交互式命令设置了内置用户的密码
/usr/local/elk/elasticsearch-6.0.0/bin/x-pack/setup-passwords interactive
#只在第一次使用的时候有效
忘记了密码,可以通过创建备用超级用户来重置密码,方法如下:
1.停止您的elasticsearch节点
2.创建备用超级用户:
/usr/local/elk/elasticsearch-6.0.0/bin/x-pack/users useradd admin -p 123456 -r superuser
3.启动您的elasticsearch节点
4.使用curl重置elastic用户密码
curl -u admin -XPUT 'http://192.168.20.101:9200/_xpack/security/user/elastic/_password?pretty' -H 'Content-Type: application/json' -d'
{
"password" : "elastic"
}
'
5.验证新密码
curl -u elastic 'http://192.168.20.101:9200/_xpack/security/_authenticate?pretty'
参考链接
https://blog.csdn.net/lilongsy/article/details/78987784
https://blog.csdn.net/u013066244/article/details/73927756
https://discuss.elastic.co/t/i-lost-the-password-that-has-been-changed/91867