目錄
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服務。
