解锁x-pack 8.x白金限制

这篇具有很好参考价值的文章主要介绍了解锁x-pack 8.x白金限制。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

解锁x-pack白金限制

x-pack只给了30天的试用,可能我们摸清楚Elasticsearch怎么用就不止30天了。所以我们还是主动延长一下x-pack的使用期。
接下来我们演示在8.0.1版本下延长x-pack的试用期限。

获取elastic的源码

首先先去elastic的github仓库获取源码,我们需要以下两个文件:

elasticsearch-8.0.1\x-pack\plugin\core\src\main\java\org\elasticsearch\license\LicenseVerifier.java
elasticsearch-8.0.1\x-pack\plugin\core\src\main\java\org\elasticsearch\xpack\core\XPackBuild.java

修改x-pack源码

首先注释掉LicenseVerifier.java的校验代码:

/*
 * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
 * or more contributor license agreements. Licensed under the Elastic License
 * 2.0; you may not use this file except in compliance with the Elastic License
 * 2.0.
 */
package org.elasticsearch.license;

import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.BytesRefIterator;
import org.elasticsearch.common.bytes.BytesReference;
import org.elasticsearch.core.internal.io.Streams;
import org.elasticsearch.xcontent.ToXContent;
import org.elasticsearch.xcontent.XContentBuilder;
import org.elasticsearch.xcontent.XContentFactory;
import org.elasticsearch.xcontent.XContentType;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.ByteBuffer;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.PublicKey;
import java.security.Signature;
import java.security.SignatureException;
import java.util.Arrays;
import java.util.Base64;
import java.util.Collections;

/**
 * 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, PublicKey publicKey) {
        /*
		byte[] signedContent = null;
        byte[] publicKeyFingerprint = null;
        try {
            byte[] signatureBytes = Base64.getDecoder().decode(license.signature());
            ByteBuffer byteBuffer = ByteBuffer.wrap(signatureBytes);
            @SuppressWarnings("unused")
            int version = byteBuffer.getInt();
            int magicLen = byteBuffer.getInt();
            byte[] magic = new byte[magicLen];
            byteBuffer.get(magic);
            int hashLen = byteBuffer.getInt();
            publicKeyFingerprint = new byte[hashLen];
            byteBuffer.get(publicKeyFingerprint);
            int signedContentLen = byteBuffer.getInt();
            signedContent = new byte[signedContentLen];
            byteBuffer.get(signedContent);
            XContentBuilder contentBuilder = XContentFactory.contentBuilder(XContentType.JSON);
            license.toXContent(contentBuilder, new ToXContent.MapParams(Collections.singletonMap(License.LICENSE_SPEC_VIEW_MODE, "true")));
            Signature rsa = Signature.getInstance("SHA512withRSA");
            rsa.initVerify(publicKey);
            BytesRefIterator iterator = BytesReference.bytes(contentBuilder).iterator();
            BytesRef ref;
            while ((ref = iterator.next()) != null) {
                rsa.update(ref.bytes, ref.offset, ref.length);
            }
            return rsa.verify(signedContent);
        } catch (IOException | NoSuchAlgorithmException | SignatureException | InvalidKeyException e) {
            throw new IllegalStateException(e);
        } finally {
            if (signedContent != null) {
                Arrays.fill(signedContent, (byte) 0);
            }
        }
		*/
		return true;
    }

    private static final PublicKey PUBLIC_KEY;

    static {
        try (InputStream is = LicenseVerifier.class.getResourceAsStream("/public.key")) {
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            Streams.copy(is, out);
            PUBLIC_KEY = CryptUtils.readPublicKey(out.toByteArray());
        } catch (IOException e) {
            throw new AssertionError("key file is part of the source and must deserialize correctly", e);
        }
    }

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

然后修改XPackBuild.java

/*
 * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
 * or more contributor license agreements. Licensed under the Elastic License
 * 2.0; you may not use this file except in compliance with the Elastic License
 * 2.0.
 */
package org.elasticsearch.xpack.core;

import org.elasticsearch.core.PathUtils;
import org.elasticsearch.core.SuppressForbidden;

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;

/**
 * Information about the built version of x-pack that is running.
 */
public class XPackBuild {

    public static final XPackBuild CURRENT;

    static {
        final String shortHash;
        final String date;

        Path path = getElasticsearchCodebase();
		/*
        if (path.toString().endsWith(".jar")) {
            try (JarInputStream jar = new JarInputStream(Files.newInputStream(path))) {
                Manifest manifest = jar.getManifest();
                shortHash = manifest.getMainAttributes().getValue("Change");
                date = manifest.getMainAttributes().getValue("Build-Date");
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        } else {
            // not running from a jar (unit tests, IDE)
            shortHash = "Unknown";
			date = "Unknown";
        }
		*/
		shortHash = "Unknown";
        date = "Unknown";
        CURRENT = new XPackBuild(shortHash, date);
    }

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

编译java文件

  • 编译环境:Ubuntu
  • Java版本:Openjdk17
  • Elasticsearch版本:8.0.1

安装Elasticsearch

安装Elasitcsearch为了提供编译需要的jar包。

  1. 下载并安装PGP Key
$ wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
  1. 安装Elasticsearch Debain Package
apt-get update && sudo apt-get install elasticsearch

安装java环境

  1. 安装openjdk17
$ apt install openjdk-17-jdk
  1. 测试是否安装成功
$ java --version
openjdk 17.0.1 2021-10-19
OpenJDK Runtime Environment (build 17.0.1+12-Ubuntu-120.04)
OpenJDK 64-Bit Server VM (build 17.0.1+12-Ubuntu-120.04, mixed mode, sharing)

将java源码编译为class文件

javac -cp "/usr/share/elasticsearch/lib/elasticsearch-8.0.1.jar:/usr/share/elasticsearch/lib/lucene-core-9.0.0.jar:/usr/share/elasticsearch/modules/x-pack-core/x-pack-core-8.0.1.jar:/usr/share/elasticsearch/lib/elasticsearch-x-content-8.0.1.jar:/usr/share/elasticsearch/lib/elasticsearch-core-8.0.1.jar" /root/LicenseVerifier.java
javac -cp "/usr/share/elasticsearch/lib/elasticsearch-8.0.1.jar:/usr/share/elasticsearch/lib/lucene-core-9.0.0.jar:/usr/share/elasticsearch/modules/x-pack-core/x-pack-core-8.0.1.jar:/usr/share/elasticsearch/lib/elasticsearch-x-content-8.0.1.jar:/usr/share/elasticsearch/lib/elasticsearch-core-8.0.1.jar" /root/XPackBuild.java

我们会得到LicenseVerifier.classXPackBuild.class两个编译好的class文件

修改x-pack-core

文件位置:

/usr/share/elasticsearch/modules/x-pack-core/x-pack-core-8.0.1.jar
  1. x-pack-core-8.0.1.jar复制到任意位置,然后解包:
$ jar -xvf x-pack-core-8.0.1.jar
  1. 删除当前文件夹下的x-pack-core-8.0.1.jar
  2. 覆盖破解好的文件:
    LicenseVerifier.class 路径在 /org/elasticsearch/license/LicenseVerifier.class
    XPackBuild.class 路径在 /org/elasticsearch/xpack/core/XPackBuild.class
  3. 重新打包x-pack-core-8.0.1.jar
$ jar cvf x-pack-core-8.0.1.jar *
  1. 把破解好的文件覆盖到/usr/share/elasticsearch/modules/x-pack-core/x-pack-core-8.0.1.jar就完成破解。

制作Docker镜像

  1. 启动elasticsearch
$ docker run -d -p 9200:9200 --name=elasticsearch -e xpack.security.enabled=false -e discovery.type=single-node elasticsearch:8.0.1
  1. 用修改的x-pack-core-8.0.1.jar替换镜像内的原版
$ docker cp .\x-pack-core-8.0.1.jar elasticsearch:/usr/share/elasticsearch/modules/x-pack-core
  1. 修改镜像内文件的权限
    首先以root用户进入容器
$ docker exec -it -u root elasticsearch /bin/bash

然后修改x-pack-core-8.0.1.jar的权限

$ cd /usr/share/elasticsearch/modules/x-pack-core
$ chmod -R 444 x-pack-core-8.0.1.jar
$ chown -R root x-pack-core-8.0.1.jar
$ chgrp -R root x-pack-core-8.0.1.jar
$ exit
  1. 重启容器
$ docker restart elasticsearch
  1. 生成镜像
$ docker commit elasticsearch elasticsearch:8.0.1C

使用elasticsearch:8.0.1C这个镜像再导入证书就可以直接激活白金权限了
6. 导出/导入镜像

# 导出镜像为tar文件
$ docker save -o elastic.tar elasticsearch:8.0.1C
# 导入tar镜像
$ docker load -i elastic.tar

激活白金授权

申请Basic License

到这个网址申请授权,我们会得到一个license.json。文件内容大概是下面这个样子

{
    "license": {
        "uid": "13370dd7-23e4-4470-ad2a-ccacb620f60a",
        "type": "basic",
        "issue_date_in_millis": 1563235200000,
        "expiry_date_in_millis": 2207746200000,
        "max_nodes": 10000,
        "issued_to": "netpro",
        "issuer": "Web Form",
        "signature": "AAAAAwAAAA3uiNJR7B8rdgnwFZItAAABmC9ZN0hjZDBGYnVyRXpCOW5Bb3FjZDAxOWpSbTVoMVZwUzRxVk1PSmkxaktJRVl5MUYvUWh3bHZVUTllbXNPbzBUemtnbWpBbmlWRmRZb25KNFlBR2x0TXc2K2p1Y1VtMG1UQU9TRGZVSGRwaEJGUjE3bXd3LzRqZ05iLzRteWFNekdxRGpIYlFwYkJiNUs0U1hTVlJKNVlXekMrSlVUdFIvV0FNeWdOYnlESDc3MWhlY3hSQmdKSjJ2ZTcvYlBFOHhPQlV3ZHdDQ0tHcG5uOElCaDJ4K1hob29xSG85N0kvTWV3THhlQk9NL01VMFRjNDZpZEVXeUtUMXIyMlIveFpJUkk2WUdveEZaME9XWitGUi9WNTZVQW1FMG1DenhZU0ZmeXlZakVEMjZFT2NvOWxpZGlqVmlHNC8rWVVUYzMwRGVySHpIdURzKzFiRDl4TmM1TUp2VTBOUlJZUlAyV0ZVL2kvVk10L0NsbXNFYVZwT3NSU082dFNNa2prQ0ZsclZ4NTltbU1CVE5lR09Bck93V2J1Y3c9PQAAAQCyhef7hVFMq4orIbwULz0c1dX+Ng4sva5RTmWxKYLnJAyXmMRLp2Pvk9YE5G9JoI4gaSB4mIUtVyPzNGJpHLQCPS/kQ8y0B+mc0aXbBKZgbDTqE6p9E+kk1j8myN9GU+JR8QnYd8GiP4ziBUc2zOyx4hskiGE++Kx1KbD4862GbZwLCo9pIIHoxnpt44OytDB9lb7rYr2JBwc07flaR8ndkHlOL7AhuV2OMwDNw978l4OK/O4qxdthxc/XVo6l03IkVoy17coeJ9Oi4YIpOBXrIAYRgjPa68SvnnM8Ykb0KvNvJ7Y8GJ7x+l2q5qMu8QrBeJQ6U0fH/2ATgUy9EiwA",
        "start_date_in_millis": 1563235200000
    }
}
### 修改授权类型和过期时间

我们需要修改license.json的以下内容:

  • 修改typeplatinum
  • 修改expiry_date_in_millis2524579200999(过期时间为2050年)

导入授权

这里我们直接用别人修改好的授权文件license.json

{
    "license": {
        "uid": "13370dd7-23e4-4470-ad2a-ccacb620f60a",
        "type": "platinum",
        "issue_date_in_millis": 1563235200000,
        "expiry_date_in_millis": 3207746200000,
        "max_nodes": 10000,
        "issued_to": "bibi",
        "issuer": "Web Form",
        "signature": "AAAAAwAAAA3uiNJR7B8rdgnwFZItAAABmC9ZN0hjZDBGYnVyRXpCOW5Bb3FjZDAxOWpSbTVoMVZwUzRxVk1PSmkxaktJRVl5MUYvUWh3bHZVUTllbXNPbzBUemtnbWpBbmlWRmRZb25KNFlBR2x0TXc2K2p1Y1VtMG1UQU9TRGZVSGRwaEJGUjE3bXd3LzRqZ05iLzRteWFNekdxRGpIYlFwYkJiNUs0U1hTVlJKNVlXekMrSlVUdFIvV0FNeWdOYnlESDc3MWhlY3hSQmdKSjJ2ZTcvYlBFOHhPQlV3ZHdDQ0tHcG5uOElCaDJ4K1hob29xSG85N0kvTWV3THhlQk9NL01VMFRjNDZpZEVXeUtUMXIyMlIveFpJUkk2WUdveEZaME9XWitGUi9WNTZVQW1FMG1DenhZU0ZmeXlZakVEMjZFT2NvOWxpZGlqVmlHNC8rWVVUYzMwRGVySHpIdURzKzFiRDl4TmM1TUp2VTBOUlJZUlAyV0ZVL2kvVk10L0NsbXNFYVZwT3NSU082dFNNa2prQ0ZsclZ4NTltbU1CVE5lR09Bck93V2J1Y3c9PQAAAQCyhef7hVFMq4orIbwULz0c1dX+Ng4sva5RTmWxKYLnJAyXmMRLp2Pvk9YE5G9JoI4gaSB4mIUtVyPzNGJpHLQCPS/kQ8y0B+mc0aXbBKZgbDTqE6p9E+kk1j8myN9GU+JR8QnYd8GiP4ziBUc2zOyx4hskiGE++Kx1KbD4862GbZwLCo9pIIHoxnpt44OytDB9lb7rYr2JBwc07flaR8ndkHlOL7AhuV2OMwDNw978l4OK/O4qxdthxc/XVo6l03IkVoy17coeJ9Oi4YIpOBXrIAYRgjPa68SvnnM8Ykb0KvNvJ7Y8GJ7x+l2q5qMu8QrBeJQ6U0fH/2ATgUy9EiwA",
        "start_date_in_millis": 1563235200000
    }
}

导入授权:

curl -XPUT -u elastic 'http://192.168.0.106:9200/_license' -H "Content-Type: application/json" -d @license.json

kibana里能看到授权成功文章来源地址https://www.toymoban.com/news/detail-403745.html

到了这里,关于解锁x-pack 8.x白金限制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • elasticsearch集群搭建、x-pack配置、kibana安装配置

    关于本帖,最近比较忙,写的某些地方进行一笔带过,后续有时间继续补充。此做暂记,以免遗忘。 elasticsearch-7.6.2.tar.gz jdk-11.0.12+7.tar.gz jdk8(已安装) kibana-7.6.2.tar.gz 安装用户(非root,这里使用的qxc用户,并赋予 sudo 权限) 安装机器ip目录 ip 10.186.11.66 10.186.11.67 10.186.11.68 生成

    2024年02月03日
    浏览(32)
  • elasticsearch x-pack能白嫖了,安装版本7.14

    本文介绍elasticsearch 7.14 解压安装方法 和x-pack 配置 1 准备环境 修改centos最大文件数 一定要做哦 添加如图 添加 vm.max_map_count=262144 生效设置 下载 elasticsearch-7.14.2-linux-x86_64.tar.gz 地址 各个版本看这个就行elastic社区下载中心 解压 安装目标/data/elasticsearch-7.14.2 修改配置文件 /dat

    2024年02月14日
    浏览(23)
  • elasticsearch-5.6.15集群部署,如何部署x-pack并添加安全认证

    目录 一、环境 1、JDK、映射、域名、三墙 2、三台服务器创建用户、并为用户授权 二、配置elasticsearch-5.6.15实例 1、官网获取elasticsearch-5.6.15.tar.gz,拉取到三台服务器 2、elas环境准备 3、修改elasticsearch.yml配置 4、修改软、硬件线程数 5、修改最大连接  6、修改jvm内存 7、所有节

    2024年01月22日
    浏览(28)
  • Spring Boot 2.0 M7 整合 ES 5 、Kibana 和 X-pack

    ES 及 x-pack 下载安装 Kibana 及 x-pack 下载安装 Spring Boot 整合 ES Spring Boot 操作 ES 阅读时间:5 分钟 摘录:打算起手不凡写出鸿篇巨作的,往往坚持不了完成第一章节 原文出处:spring4all.com spring-data-elasticsearch 之 ElasticSearch 架构初探,详细看下我另外一篇文章《深入浅出 spring-d

    2024年02月20日
    浏览(23)
  • k8s部署Elasticsearch集群+Kibana方案--开启X-Pack 安全认证

    本文中使用 StatefulSet 方式部署 Elasticsearch 集群,并且开启X-Pack 安全认证,存储使用的是NFS,属于一个初学者自己探索的方案,如果有比较好的方案,还请不吝评论赐教。 版本说明: Kubernetes v1.25.6 – v1.26.4 Elasticsearch, Kibana 7.13.3 NFS Subdir External Provisioner 前置环境 需要安装好

    2024年02月11日
    浏览(40)
  • Ubuntu解锁N卡VGpu记录:解锁帧数限制,降压超频等

    Ubuntu解锁N卡VGpu记录以及DLC 前言: 把N卡解锁VGPu好处基本就是host DockerENvCu118和KVM-Guset-windows等都可以使用Cuda而且性能基本没什么损失,大概只支持包含20系以下的显卡,30系安培代码里包含,支持不支持我不清楚. 开搞: 根据这位写的做的:https://bytehorizon.net/archives/crystalast/74/ 概况就

    2024年02月19日
    浏览(23)
  • 【含面试】解锁MySQL group_concat的无限可能性:解决长度限制并实现高效查询

    AI绘画关于SD,MJ,GPT,SDXL百科全书 面试题分享点我直达 2023Python面试题 2023最新面试合集链接 2023大厂面试题PDF 面试题PDF版本 java、python面试题 项目实战:AI文本 OCR识别最佳实践 AI Gamma一键生成PPT工具直达链接 玩转cloud Studio 在线编码神器 玩转 GPU AI绘画、AI讲话、翻译,GPU点亮AI想象

    2024年02月04日
    浏览(36)
  • OllyDbg 使用 快捷键 界面 实战:修改数据 修改代码 获取正确序列号,重要数据等 跳过关键验证 改试用期 解锁限制的功能 安防安全行业基础

    1、按住F8直到 找到位置 (弹出一个MessageBox窗口) 2、再次,进入到位置里, 找到要改的值 3、修改值(根据数据地址,到数据面板 按下Ctrl+G 输入 地址 鼠标选中要改的地方,按下空格键输入要改动字符。) 4、永久保存(选中改过的部分–右键选择复制到可执行程序–备份

    2024年02月21日
    浏览(31)
  • 最新版本!亲测有效!ES_7.17.9安装教程(破解白金版、kibana安装)

    1.修改服务器相关配置 1)永久关闭防火墙 2)修改主机名 3)配置主机间通 4)ssh免密配置 5)修改最大可创建文件数大小 6)修改最大虚拟内存大小 2.ES安装前期准备 1)创建es用户 2)创建es文件夹,并在其下创建data和logs文件夹 3)为用户授权es文件操作权限 3.ES解压安装 4.修改

    2024年02月08日
    浏览(32)
  • C语言结构体字节对齐(内存对齐)之#pragma pack和__attribute__((packed)的使用

    在不使用 #pragma pack 和 __attribute__((packed) 等选项来自定义字节对齐大小的情况下,关于正常字节对齐的描述,可参考博文: C/C++计算类/结构体和联合体(union)所占内存大小(内存对齐问题)_联合体占用的内存空间_SOC罗三炮的博客-CSDN博客 同学可以尝试将char f 注释,最后将

    2024年02月12日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包