目录
1. 概述
接上一篇文章:Elasticsearch + Kibana + X-Pack + Head集群安装部署
安装部署好Elasticsearch环境并安装了安全组件x-pack。但是运行一段时间以后,Kibana无法正常登陆,但是程序却可以正常访问es,猜测可能Kibana访问的9200端口,程序访问了9300端口。不管怎么样,x-pack是出问题了。
x-pack是收费软件,安装x-pack有30天的试用期,30天以后license就会过期。
2. 破解x-pack
我使用的版本是5.5.0,在官网下载x-pack-5.5.0.zip包。
解压后,在elasticsearch目录找到x-pack-5.5.0.jar。
再把x-pack-5.5.0.jar进行解压,找到LicenseVerifier.class文件。(全路径 org.elasticsearch/license/LicenseVerifier.class)
使用反编译软件Luyten进行反编译查看。
2.1 修改license文件
创建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;
}
}
2.2 编译LicenseVerifier.java并打包
编译及打包操作最好在Linux下进行。
# 切换LicenseVerified.java目录
cd /tmp/
# 进行编译,编译需要指定依赖的jar包文件。得到LicenseVerifier.class
javac "/opt/elasticsearch/lib/elasticsearch5.5.0.jar:/opt/elasticsearch/lib/lucene-core-6.6.0.jar:/opt/elasticsearch/plugins/x-pack/x-pack-5.5.0.jar" LicenseVerifier.java
# 对x-pack-5.5.0.jar解压
cp /opt/elasticsearch/plugins/x-pack/x-pack-5.5.0.jar /tmp/xpack
cd /tmp/xpack
jar -xf x-pack-5.5.0.jar && rm -rf x-pack-5.5.0.jar
# 把LicenseVerifier.class 文件替换
cp /tmp/LicenseVerifier.class /tmp/xpack/org/elasticsearch/license/LicenseVerifier.class
# 重新打包
java -cf x-pack-5.5.0.jar ./
# 替换jar包(windows环境需自己拷贝,各节点都要替换)
cp x-pack-5.5.0.jar /opt/elasticsearch/plugins/x-pack/x-pack-5.5.0.jar /tmp/xpack
2.3 申请免费license
在官网(https://license.elastic.co/registration)填写信息,重点是邮箱和国家,会在邮箱中收到一个license json文件。
// 文件主要修改两个字段 type:证书类型 && expriy:到期时间
"type":"platinum";
"expiry_date_in_millis":2524579200999
type为软件版本,默认为basic,platinum是白金版,权限也很高。
expiry_date_in_millis就是你要截止的日期,我配置的是到2050年。
2.4 更新证书
# 更新证书
curl -XPUT -u elastic:changeme 'http://192.168.1.91:9200/_xpack/license' -d @license.json
# 检查证书
curl -XGET -u elastic:changeme 'http://192.168.1.91:9200/_license'
各个节点都要更新。
2.5. 重启elasticsearch服务
重新启动各节点es服务。