1. 程式人生 > >elasticsearch之x-pack破解

elasticsearch之x-pack破解

環境

作業系統:win7
虛擬機器:centos7
工具:CRT

概要

利用kibana圖形化介面檢視叢集:

現在發現都訪問不了,查了下日誌才發現,我的license過期啦!
這時我才想起來x-pack好像是收費的。

無奈,只好破解啦

破解 x-pack

我的版本是x-pack-5.2.2,去官網下載x-pack-5.2.2.zip包。
進行解壓,在elasticsearch目錄中找到x-pack-5.2.2.jar
再把x-pack-5.2.2.jar進行解壓。找到LicenseVerifier.class檔案。
(全路徑:org.elasticsearch/license/LicenseVerifier.class

這裡我們需要用反編譯軟體檢視。jd-gui反編譯出來的不準,我們使用Luyten來進行反編譯。

①我們需要先把內容複製到一個檔案(自己建立LicenseVerifier.java)中。
②將其改為如下程式碼,(下面的程式碼是為了方便我們替換license.json檔案,所以全部返回true):

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; } }

③我們把其上傳了Linux伺服器中,隨便哪個目錄。
我是在/usr/programe_files/LicenseVerifier.java

④接著我們需要進行編譯,正常情況,我們可能需要對這個專案編譯,其實javac命令也可以對單個檔案進行編譯,只需要進入相應的類路徑就可以啦。

javac -cp "/usr/programe_files/elasticsearch-5.2.2/lib/elasticsearch-5.2.2.jar:/usr/programe_files/elasticsearch-5.2.2/lib/lucene-core-6.4.1.jar:/usr/programe_files/elasticsearch-5.2.2/plugins/x-pack/x-pack-5.2.2.jar"
LicenseVerifier.java

這裡說明下:

我的elasticsearch安裝目錄在/usr/programe_files/elasticsearch-5.2.2

⑤把編譯後得到的LicenseVerifier.class替換原有的那個。我的做法是,把其下載到window系統中,利用好壓進行替換。再把x-pack-5.2.2.jar上傳上去進行替換。
千萬不要像我一樣下載到window中利用好壓進行替換
千萬不要像我一樣下載到window中利用好壓進行替換
千萬不要像我一樣下載到window中利用好壓進行替換
文章最後會解釋

替換的地方:elasticsearch安裝目錄中的plugins –> x-pack
你安裝了幾個elasticsearch,就要替換幾個。

如果你還沒有安裝x-pack,你可以把x-pack-5.2.2.zip中的elasticsearchx-pack-5.2.2.jar進行替換。然後利用替換後的x-pack-5.2.2.zip進行x-pack外掛的安裝。

⑥去官網申請免費license,會發郵件給你進行下載。
將得到的檔案進行如下修改:

{"license":{"uid":"ba9ae270-28ee-4051-810f-09469dfd4aa4","type":"platinum","issue_date_in_millis":1498694400000,"expiry_date_in_millis":2524579200999,"max_nodes":100,"issued_to":"yu tao (shanghai)","issuer":"Web Form","signature":"AAAAAwAAAA0d3SXUL/5bRSxB/OU4AAABmC9ZN0hjZDBGYnVyRXpCOW5Bb3FjZDAxOWpSbTVoMVZwUzRxVk1PSmkxaktJRVl5MUYvUWh3bHZVUTllbXNPbzBUemtnbWpBbmlWRmRZb25KNFlBR2x0TXc2K2p1Y1VtMG1UQU9TRGZVSGRwaEJGUjE3bXd3LzRqZ05iLzRteWFNekdxRGpIYlFwYkJiNUs0U1hTVlJKNVlXekMrSlVUdFIvV0FNeWdOYnlESDc3MWhlY3hSQmdKSjJ2ZTcvYlBFOHhPQlV3ZHdDQ0tHcG5uOElCaDJ4K1hob29xSG85N0kvTWV3THhlQk9NL01VMFRjNDZpZEVXeUtUMXIyMlIveFpJUkk2WUdveEZaME9XWitGUi9WNTZVQW1FMG1DenhZU0ZmeXlZakVEMjZFT2NvOWxpZGlqVmlHNC8rWVVUYzMwRGVySHpIdURzKzFiRDl4TmM1TUp2VTBOUlJZUlAyV0ZVL2kvVk10L0NsbXNFYVZwT3NSU082dFNNa2prQ0ZsclZ4NTltbU1CVE5lR09Bck93V2J1Y3c9PQAAAQCBFriH7K2dVFXmsQLHDvpY0Ppda0FHGTDSjAmnCcplQWaNKHtX+DR6znV+vOiokhQ8s/Yz5PmI5GFhsqkLEWXl975x1/8GHaDgb7aMv7UzciFw2duWsrH8mKTGGr2wHUKMVW7pUx2Kcr5WkH0G3ax3gynsvnYTApqWiyWdkdPX/jR/T1UhfjEqpCKCQryj+aNLxy2GP+4wF/wH4NvmDF0aWALFCKDAWhuDMCNmm+oKrLrgcIXyQERk7JBf5rZG5Xm7ViiyQ8aFf8X4CN7hA8xxrPmT57jtTrX9d4Q3Kf4jEBVeUnk/qa1Doj0/Ezn2G0vVE2oRQOXmUp9nwo0JTAHj","start_date_in_millis":1498694400000}}

其中主要的就是:

"type":"platinum""expiry_date_in_millis":2524579200999

本來我想把type改為enterprise的,結果它不認。platinum是白金版,許可權也很高。
expiry_date_in_millis就是你要截止的日期,我配置的是到2050年。

更新 license檔案

把檔案重新命名為:license.json,接著上次到伺服器,放在自己喜歡的目錄中,接著在該目錄中執行如下命令:

[root@localhost Downloads]#curl -XPUT -u elastic:changeme 'http://192.168.100.50:9200/_xpack/license' -d @license.json
或者
[root@localhost Downloads]#curl -XPUT -u elastic:changeme 'http://192.168.100.50:9200/_xpack/license?acknowledge=true' -d @license.json

之後再把elasticsearch重啟就OK了。

我遇到了問題,啟動kibana時,會使得本來已啟動的elasticsearch給關閉啦!而且把空指標異常。真是吐血。折騰到現在也沒有搞定。

不過我實踐到,把kibana中的外掛x-pack刪除掉,kibana還是可以正常啟動。但是安裝上x-pack就會出錯。

參考連結:

晚上一直嘗試到現在,基本可以肯定,上面的破解方式,對kibana來說是不成功的。
因為我又在elasticsearch-5.4.3kibana-5.4.3x-pack-5.4.3安裝了遍。用官方原版的就是沒有問題。用自己改的認證檔案license.json就是不行。

=========2017年11月11日================start==========

今天我再次試驗成功。。。
其實今天打好包後,我一開始還是報錯誤,和幾個月前一樣,只要啟動kibanaelasticsearch立馬就會報空指標。但是評論裡又有人成功啦!

後來才發現,原來是打包問題!
千萬不要在window上打包
千萬不要在window上打包
千萬不要在window上打包
我上面的教程裡寫著,利用好壓進行打包壓縮,我本來是為了省事情,結果把自己給坑了。

Linux上打包命令:

# 解壓 x-pack-5.6.4.zip 得到 x-pack-5.6.4.jar
# 或者假設你已經安裝了`x-pack`,去elasticsearch安裝目錄的`plugin`目錄裡找。

# 建立臨時資料夾
[yutao@localhost downloads]$ mkdir test
[yutao@localhost downloads]$ mv /usr/programe_files/elasticsearch-5.6.4/plugins/x-pack/x-pack-5.6.4.jar test/
[yutao@localhost downloads]$ cd test/
[yutao@localhost test]$ jar -xvf x-pack-5.6.4.jar
[yutao@localhost test]$ rm -rf x-pack-5.6.4.jar

#刪除原檔案,將新編譯的拷貝到該位置
[yutao@localhost test]$ rm -rf org/elasticsearch/license/LicenseVerifier.class 
[yutao@localhost test]$ cp ../LicenseVerifier.class org/elasticsearch/license/

#重新打包
[yutao@localhost test]$ jar -cvf x-pack-5.6.4.jar ./*

#覆蓋plugins資料夾裡面的jar包
[yutao@localhost test]$ rm -rf /usr/programe_files/elasticsearch-5.6.4/plugins/x-pack/x-pack-5.6.4.jar 
[yutao@localhost test]$ mv x-pack-5.6.4.jar /usr/programe_files/elasticsearch-5.6.4/plugins/x-pack

之後再去執行 # 更新 license檔案 這個步驟(已經執行過了,就不用在執行啦!)

這時再重啟elasticsearchkibana就沒有報錯啦!
=========2017年11月11日================end==========

{
  "license" : {
    "status" : "active",
    "uid" : "947be22c-3bbf-408a-a387-018bbd7eb8f9",
    # 這裡已經發生改變↓
    "type" : "platinum",
    "issue_date" : "2017-11-11T00:00:00.000Z",
    "issue_date_in_millis" : 1510358400000,
    # 還有這裡↓
    "expiry_date" : "2049-12-31T16:00:00.999Z",
    "expiry_date_in_millis" : 2524579200999,
    "max_nodes" : 100,
    "issued_to" : "yu tao (上海)",
    "issuer" : "Web Form",
    "start_date_in_millis" : 1510358400000
  }
}

======2017年12月22日===14點22======start===
版本6之前密碼預設都是changeme,我在版本6.0.0上測試的時候,發現這個密碼不行了;後來我執行:

# 這個命令你只能執行一次,之後就不能執行了
bin/x-pack/setup-passwords auto

重新自動生成密碼;
假設執行上面的命令之後,你又忘記密碼了,畢竟,自動生成的密碼很難記,這個時候,你需要:
建立一個超級使用者,利用這個超級使用者,重置密碼;