1. 程式人生 > 實用技巧 >Elasticsearch第二章:Elasticsearch6.4.2破解xpack白金認證,以及kibana登入

Elasticsearch第二章:Elasticsearch6.4.2破解xpack白金認證,以及kibana登入

elasticsearch通過x-pack模組來提供密碼認證等功能,不過我們無需額外安裝x-pack外掛,x-pack包在6.3版本後已經整合在es安裝包內

步驟挺簡單。大概的步驟如下
  1. 替換掉原本的Elasticsearch的modules裡面的x-pack-core-6.4.2.jar
  2. 申請許可證。上傳安裝許可證
  3. 完事
docker exec -it es6.4.2 /bin/bash
cd modules/x-pack-core/

現在看看怎麼破解 我先吧這個jar下載到本地,無論過程如何反正只要替換掉這個jar包其中的兩個class檔案就行了
yum update && yum install lrzsz
sz x-pack-core-6.4.2.jar
使用反編譯檔案開啟x-pack-core-6.4.2.jar檔案,之後另存為java檔案 Luyten的下載地址(可以用下面的連結下載 後續結尾也會附上私有云連線)
https://github.com/deathmarine/Luyten/releases/download/v0.5.4_Rebuilt_with_Latest_depenencies/luyten-0.5.4.exe
找到這兩個檔案LicenseVerifier和XPackBuild,找到之後另存為java檔案

替換成下面的程式碼

LicenseVerifier.java

package org.elasticsearch.license;

import java.nio.*;
import org.elasticsearch.common.bytes.*;
import java.util.*;
import java.security.*;
import org.elasticsearch.common.xcontent.*;
import org.apache.lucene.util.*;
import org.elasticsearch.core.internal.io.*;
import java.io.*;

public class LicenseVerifier
{
    public static boolean verifyLicense(final License license, final byte[] encryptedPublicKeyData) {
        return true;
    }

    public static boolean verifyLicense(final License license) {
        return true;
    }
}
  XPackBuild.java
package org.elasticsearch.xpack.core;

import org.elasticsearch.common.io.*;
import java.net.*;
import org.elasticsearch.common.*;
import java.nio.file.*;
import java.io.*;
import java.util.jar.*;

public class XPackBuild
{
    public static final XPackBuild CURRENT;
    private String shortHash;
    private String date;

    @SuppressForbidden(reason = "looks up path of xpack.jar directly")
    static Path getElasticsearchCodebase() {
        final URL url = XPackBuild.class.getProtectionDomain().getCodeSource().getLocation();
        try {
            return PathUtils.get(url.toURI());
        }
        catch (URISyntaxException bogus) {
            throw new RuntimeException(bogus);
        }
    }

    XPackBuild(final String shortHash, final String date) {
        this.shortHash = shortHash;
        this.date = date;
    }

    public String shortHash() {
        return this.shortHash;
    }

    public String date() {
        return this.date;
    }

    static {
        final Path path = getElasticsearchCodebase();
        String shortHash = null;
        String date = null;
        Label_0157: {
            shortHash = "Unknown";
            date = "Unknown";
        }
        CURRENT = new XPackBuild(shortHash, date);
    }
}

改完之後就需要吧java編譯成class檔案

需要把lib下面的lib/elasticsearch-6.4.2.jar lucene-core-7.4.0.jar elasticsearch-core-6.4.2.jar的依賴下載下來

然後把剛才的依賴加上。重新吧java編譯成class檔案

javac -cp elasticsearch-6.4.2.jar;lucene-core-7.4.0.jar;x-pack-core-6.4.2.jar;elasticsearch-core-6.4.2.jar LicenseVerifier.java
javac -cp elasticsearch-6.4.2.jar;lucene-core-7.4.0.jar;x-pack-core-6.4.2.jar;elasticsearch-core-6.4.2.jar LicenseVerifier.java

然後把兩個class檔案替換掉剛才的那兩個,覆蓋掉之前未修改的檔案,然後在重新打成jar包

jar -cvf x-pack-core-6.4.2.jar 

然後進入es 。rz上傳剛才新做的jar 替換掉剛才的那個jar包,然後重啟es

docker exec -it es6.4.2 /bin/bash
cd modules/x-pack-core/
mv x-pack-core-6.4.2.jar x-pack-core-6.4.2.jar.back
rz
rm x-pack-core-6.4.2.jar.back
exit
docker restart es6.4.2

jar包替換好了之後。就需要去申請lincese,申請地址:https://license.elastic.co/registration,開啟之後這樣。自己申請一下

之後會發送郵件,收到郵件裡面有個下載連結。吧json下載下來。

修改json內的東西。修改license的版本和期限,type改為platinum白金版,expiry_date_in_millis期限設為2855980923000

修改好了之後 json也準備好了。現在準備上傳,上傳有好幾種方式。我這裡就直接用kibana上傳就行了方便。

若先配置證書再設定密碼就會導致Kibana無法連線到Elasticsearch,開啟kibana 先申請30天試用。

開啟es 開啟密碼

docker exec -it es6.4.2 /bin/bash
cd config
vi elasticsearch.yml

 編輯yml

cluster.name: "docker-cluster"
#外網訪問
network.host: 0.0.0.0
#開啟xpack認證
xpack.security.enabled: true
# minimum_master_nodes need to be explicitly set when bound on a public IP
# set to 1 to allow single node clusters
# Details: https://github.com/elastic/elasticsearch/pull/17288
discovery.zen.minimum_master_nodes: 1
#跨域
http.cors.enabled: true
http.cors.allow-origin: "*"

  然後 退出 重啟。重啟之後進入bin,修改密碼

elasticsearch-setup-passwords interactive

ok改完了。登入es驗證一下

現在就來修改一下kibana的配置,es設定了密碼 kibana就訪問不進去了

docker exec -it kinaba6.4.2 /bin/bash
cd config/
vi kibana.yml

  將下面的引數新增進去(密碼和使用者名稱需要加引號,否則不然可能docker啟動不了kibana)

elasticsearch.username: 'elastic'
elasticsearch.password: '123456'

  

【其他】如果啟動不了kibana,就需要單獨容器內的配置檔案複製出來 在替換進去修改,這裡以kibana舉例

docker cp kinaba6.4.2:/opt/kibana/config/kibana.yml .
vi kibana.yml
docker cp kibana.yml kinaba6.4.2:/opt/kibana/config/kibana.yml
docker restart kinaba6.4.2

  解釋:吧kibana的配置檔案複製到當前目錄下 修改好了之後 替換回去 在重啟容器

登入進來之後 升級白金版本

上傳剛才改過的json

ok完成。

也可以看一下es的到期時間

ok!到這裡就完成了

下面附帶直接替換的jar和class檔案

http://www.nutirachel.top:5000/sharing/p2oONIxtn

密碼:laozizuishuai