三、elasticsearch之插件x-pack许可证安装说明

概要

在elasticsearch中有30天的试用期,我找到网上大神的一些文章,试用了之后发现可以进行破解使用,整个过程比较简单,特此写下笔记
http://ip:9100/?auth_user=elastic&auth_password=123456
现在发现都访问不了,查了下日志才发现,我的license过期啦! 这时我才想起来x-pack好像是收费的。

破解x-pack

我的版本是x-pack-5.2.2,在elasticsearch插件中找到x-pack-5.2.2.jar,拷贝到其他目录下进行解压
找到LicenseVerifier.class (路径为:org.elasticsearch/license/LicenseVerifier.class)和XPackBuild.class(路径为:/org/elasticsearch/xpack/XPackBuild.class)文件

1.修改license

准备LicenseVerifier.java 和XPackBuild.java两个文件后进行替换

  • LicenseVerifier.java如下:
package org.elasticsearch.license; 
import java.nio.*; import java.util.*; 
import java.security.*; 
import org.elasticsearch.common.xcontent.*; 
import org.apache.lucene.util.*; 
import org.elasticsearch.common.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); 
    }
}

2.打包成class
打包成class,而后替换。如果你的安装在/usr/local下,那么大概如下

  • LicenseVerifier

到LicenseVerifier.java所存放的目录下执行:

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

到XPackBuild.java所存放的目录下执行:

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

如下:生成的所需文件

[root@linux scripts]# ll
total 18
-rw-r--r-- 1 root root  410 Jun 23 11:49 LicenseVerifier.class
-rw-r--r-- 1 root root  523 Jun 23 11:32 LicenseVerifier.java
-rw-r--r-- 1 root root 1508 Jun 23 11:52 XPackBuild.class
-rw-r--r-- 1 root root 1311 Jun 23 11:34 XPackBuild.java

为了能够分辨的更清楚,创建一个目录demo,复制进去后解压,而后删除原来的包或者备份

[root@linux ]# cp /usr/local/elasticsearch/plugins/x-pack/x-pack-5.2.2.jar /data/scripts/demo/
[root@linux ]# cd /data/scripts/demo/ &&  jar -xvf  x-pack-5.2.2.jar
解压到当前目录,注意,不会创建一个新文件夹,而是将所有jar包的内容全部解压到当前文件夹

将class文件覆盖到解压出的文件下

[root@linux scripts]# \cp LicenseVerifier.class /data/scripts/demo/org/elasticsearch/license/LicenseVerifier.class
[root@linux scripts]# \cp XPackBuild.class /data/scripts/demo/org/elasticsearch/xpack/XPackBuild.class

当文件覆盖回去之后开始打包压缩

[root@linux scripts]# cd demo/
[root@linux demo]# jar -cvfM0 x-pack-5.2.2.jar ./

参数解析:

-c 创建jar包
-v 显示过程信息
-f 指定jar包的文件名
-M 不产生所有文件的清单文件(Manifest.mf)
-0 产生jar包时不对其中的内容进行压缩处理

生成一个新的x-pack-5.2.2.jar包后覆盖到/usr/local/elasticsearch/plugins/x-pack/下,license修改完成,然后重启es

[root@linux demo]# \cp x-pack-5.2.2.jar  /usr/local/elasticsearch/plugins/x-pack/
[root@linux demo]# ps aux|egrep ^elastic|awk '{print $2}'|xargs kill && su elastic -c "/usr/local/elasticsearch/bin/elasticsearch -d"

3.申请license
打开elastic申请页面进行申请,会发送到邮箱,下载后进行编辑
在这里插入图片描述
将"expiry_date_in_millis":1565135999999修改"expiry_date_in_millis":3107746200000 # 1年变为50年
将"type":“basic"修改为"type”:“platinum” # 基础版变更为铂金版

  • 保存下来,修改后的文件可以重复使用到其它ES服务器

修改之前的许可证可用时间

[root@linux scripts]# curl -XGET -u elastic:123456  'http://localhost:9200/_license'
{
    
    
  "license" : {
    
    
    "status" : "active",
    "uid" : "5227c16c-b7c8-4cd0-ad80-ab3d6200bca7",
    "type" : "trial",
    "issue_date" : "2020-06-22T08:18:57.356Z",
    "issue_date_in_millis" : 1592813937356,
    "expiry_date" : "2020-07-22T08:18:57.356Z",
    "expiry_date_in_millis" : 1595405937356,
    "max_nodes" : 1000,
    "issued_to" : "es_cluster",
    "issuer" : "elasticsearch",
    "start_date_in_millis" : -1
  }
}

更新 license文件
把文件重命名为:license.json,接着上次到服务器,放在自己喜欢的目录中,接着在该目录中执行如下命令:

[root@linux scripts]# curl -XPUT -u elastic:123456  'http://localhost:9200/_xpack/license?acknowledge=true' -d @license.json
{
    
    "acknowledged":true,"license_status":"valid"}
[root@linux scripts]# curl -XPUT -u elastic:123456  'http://localhost:9200/_xpack/license?acknowledge=true' -H "Content-Type: application/json" -d @license.json
{
    
    "acknowledged":true,"license_status":"valid"}

在查看修改之后的许可证可用时间

[root@linux scripts]# curl -XGET -u elastic:123456  'http://localhost:9200/_license'
{
    
    
  "license" : {
    
    
    "status" : "active",
    "uid" : "45b6723c-ec7a-48de-ac5f-9625ca41acd1",
    "type" : "platinum",
    "issue_date" : "2020-06-23T00:00:00.000Z",
    "issue_date_in_millis" : 1592870400000,
    "expiry_date" : "2068-06-24T06:50:00.000Z",    #到期时间变为2068年
    "expiry_date_in_millis" : 3107746200000,
    "max_nodes" : 100,
    "issued_to" : "Bertram Bertram (???)",
    "issuer" : "Web Form",
    "start_date_in_millis" : 1592870400000
  }
}

到此,证书许可证完成修改!

猜你喜欢

转载自blog.csdn.net/chj_1224365967/article/details/106922217