Elasticsearch 7.4.0 白金版白嫖


Elasticsearch 7.4.0 白金版白嫖

最近在學習 ELK 日志分析系統,Elasticsearch X-PACK 白金版只有 30 天試用,這怎么能忍?網上一搜有很多破解教程,不過全是 6.x 版本的,我看了下源代碼,和 7.4.0 的不太一樣,干脆自己改一份。
特別強調,僅作學習使用!!!

首先,從官網下一份 Linux 版的 Elasticsearch 安裝包,再從開源社區拉取一份 Elasticsearch 源碼。我在 docker 上部署的時候用的還是 7.4.0 ,官網都已經 7.4.1 了,不過依然可以用。

官方下載頁
https://www.elastic.co/cn/downloads/elasticsearch

開源倉庫地址
GitHub
https://github.com/elastic/elasticsearch
Gitee(推薦,國內網速你懂的)
https://gitee.com/mirrors/elasticsearch

然后就是修改源碼,再重新編譯進行偷梁換柱了

其中 LicenseVerifier.java 在 elasticsearch/ x-pack / plugin / core / src / main / java / org / elasticsearch / license / 目錄下,認證用的,改!

package org.elasticsearch.license;

/**
 * Responsible for verifying signed licenses
 */
public class LicenseVerifier {

    /**
     * verifies the license content with the signature using the packaged
     * public key
     * @param license to verify
     * @return true if valid, false otherwise
     */
    public static boolean verifyLicense(final License license, byte[] publicKeyData) {
        return true;
    }

    public static boolean verifyLicense(final License license) {
        return true;
    }
}

其中 XPackBuild.java 在 elasticsearch/ x-pack / plugin / core / src / main / java / org / elasticsearch / xpack / core 目錄下,校驗 jar 包用的,再改!

package org.elasticsearch.xpack.core;

import org.elasticsearch.common.SuppressForbidden;
import org.elasticsearch.common.io.PathUtils;

import java.io.IOException;
import java.net.URISyntaxException;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.jar.JarInputStream;
import java.util.jar.Manifest;

public class XPackBuild {

    public static final XPackBuild CURRENT;

    static {
        CURRENT = new XPackBuild("Unknown", "Unknown");
    }

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

    private String shortHash;
    private String date;

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

    public String shortHash() {
        return shortHash;
    }

    public String date() {
        return date;
    }
}

在 Linux 上找個位置把 Elasticsearch 安裝包解壓了,我直接在 / 下搞了,順便再創建上面那兩個改過的 java 文件

重新編譯下

javac -cp "/elasticsearch-7.4.1/lib/elasticsearch-7.4.1.jar:/elasticsearch-7.4.1/lib/lucene-core-8.2.0.jar:/elasticsearch-7.4.1/modules/x-pack-core/x-pack-core-7.4.1.jar" LicenseVerifier.java

javac -cp "/elasticsearch-7.4.1/lib/elasticsearch-7.4.1.jar:/elasticsearch-7.4.1/lib/lucene-core-8.2.0.jar:/elasticsearch-7.4.1/modules/x-pack-core/x-pack-core-7.4.1.jar:/elasticsearch-7.4.1/lib/elasticsearch-core-7.4.1.jar"  XPackBuild.java

找到安裝包 modules\x-pack-core\ 目錄下的 x-pack-core-7.4.1.jar,把編譯得到的 class 文件根據相應的類路徑替換掉。

別忘了,咱用的是 7.4.0 版本,把 jar 包名字改成 7.4.0 的,然后把 docker 容器內的 jar 包換了

docker cp ./x-pack-core-7.4.0.jar 6ead3863ae82:/usr/share/elasticsearch/modules/x-pack-core

接下來就是更新許可證了

官方申請地址
https://register.elastic.co/marvel_register

收到郵件后,里面有個地址,進去后可以下載 json 格式的許可證文件。下載下來,修改里面的內容,主要是把 "basic" 改為 "platinum" 即白金版,"expiry_date_in_millis" 這個時間戳改大點,就夠用了。
這是我的許可證,一直續到了 2049年10月1日:

{"license":{"uid":"4000d1b5-a06b-4d18-8501-ca3754b2c6c7","type":"platinum","issue_date_in_millis":1571875200000,"expiry_date_in_millis":2516630400000,"max_nodes":100,"issued_to":"bob mike (mikebob)","issuer":"Web Form","signature":"AAAAAwAAAA3CvX09J7V8T5tT0i55AAABmC9ZN0hjZDBGYnVyRXpCOW5Bb3FjZDAxOWpSbTVoMVZwUzRxVk1PSmkxaktJRVl5MUYvUWh3bHZVUTllbXNPbzBUemtnbWpBbmlWRmRZb25KNFlBR2x0TXc2K2p1Y1VtMG1UQU9TRGZVSGRwaEJGUjE3bXd3LzRqZ05iLzRteWFNekdxRGpIYlFwYkJiNUs0U1hTVlJKNVlXekMrSlVUdFIvV0FNeWdOYnlESDc3MWhlY3hSQmdKSjJ2ZTcvYlBFOHhPQlV3ZHdDQ0tHcG5uOElCaDJ4K1hob29xSG85N0kvTWV3THhlQk9NL01VMFRjNDZpZEVXeUtUMXIyMlIveFpJUkk2WUdveEZaME9XWitGUi9WNTZVQW1FMG1DenhZU0ZmeXlZakVEMjZFT2NvOWxpZGlqVmlHNC8rWVVUYzMwRGVySHpIdURzKzFiRDl4TmM1TUp2VTBOUlJZUlAyV0ZVL2kvVk10L0NsbXNFYVZwT3NSU082dFNNa2prQ0ZsclZ4NTltbU1CVE5lR09Bck93V2J1Y3c9PQAAAQCQmJJzPPt4L/B3VQzRKxSp3Krg6sDfnsnoxSW4Tp2YeH19wfa8fpKaEifYlLTT8PvpExGLyR+STnYv1qI5D9Uhi9jT4THDR5mKasfYvqk/Mz5MLedNCw+Yt/r4u7EC5bFMA0uZis4B+3VqTDrWEvcc1fRyOvjzh2tE29vYDhfUaqTJGXp9VXMooXGx7ZaNy9mIxP4J2ywgtfvj4qFFZeg8ZYUsvAki3Mk4QTiTcSZc3OT9+ZVtO1/3OXpHANmy69ENqpayoJOm3UvRaWkR0ksIzgZkGF5m0S/2iNeFs5OfoBvbjpNcsGRxo/uqIi4fW3J2b/gfaP3DFh1IINK+5Md4","start_date_in_millis":1571875200000}}

你可以在 Kibana UI 上傳許可證激活,也可以用命令的方式:

# 建一個文件命名為 license.json,里面放上面的 json 字符串
curl -XPUT 'http://localhost:9200/_xpack/license' -H "Content-Type: application/json" -d @license.json

返回 {"acknowledged":true,"license_status":"valid"} 就表示續命成功了。

最后,別忘了把 xpack security 配置下,不然 Kibana 連不上 Elasticsearch 的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM