总体步骤说明
默认情况,查看版本一个月到期,如图所示是显示菜单路径,原图没有保存
1、修改x-pack-core-7.12.0.jar
2、更新许可
3、重启es
一、修改x-pack-core-7.12.0.jar
1、随便找一个目录创建两个java文件 分别是XPackBuild.java、LicenseVerifier.java:
XPackBuild.java 文件
[root@khbq-es01 opt]# cat XPackBuild.java
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;
}
}
LicenseVerifier.java文件
[root@khbq-es01 opt]# cat LicenseVerifier.java
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;
}
}
2、重新编译,生成2个class文件
#先把es的lib目录拷贝出来
docker cp es01:/usr/share/elasticsearch/lib .
docker cp es01:/usr/share/elasticsearch/modules .
#编译
javac -cp "lib/elasticsearch-7.12.0.jar:lib/lucene-core-8.8.0.jar:modules/x-pack-core/x-pack-core-7.12.0.jar" LicenseVerifier.java
javac -cp "lib/elasticsearch-7.12.0.jar:lib/lucene-core-8.8.0.jar:modules/x-pack-core/x-pack-core-7.12.0.jar:lib/elasticsearch-core-7.12.0.jar" XPackBuild.java
3、打开modules/x-pack-core/x-pack-core-7.12.0.jar 并替换两个class文件
4、最后把替换好的jar包替换elasticsearch下的x-pack-core-7.12.0.jar包,然后重启Elasticsearch
docker cp x-pack-core-7.12.0.jar es01:/usr/share/elasticsearch/modules/x-pack-core
docker restart es01
二、更新许可证
1、去官网(https://license.elastic.co/registration)申请license后,下载下来是下面这种格式,该文件已经改好,可以直接用:
{“license”:{“uid”:“864c20ea-b26f-4f1d-bfe5-4f02a26f90a9”,“type”:“platinum”,“issue_date_in_millis”:1570752000000,“expiry_date_in_millis”:2524579200999,“max_nodes”:100,“issued_to”:“deng pang (yiren)”,“issuer”:“Web Form”,“signature”:“AAAAAwAAAA3m1fB/yRfUho18V4FpAAABmC9ZN0hjZDBGYnVyRXpCOW5Bb3FjZDAxOWpSbTVoMVZwUzRxVk1PSmkxaktJRVl5MUYvUWh3bHZVUTllbXNPbzBUemtnbWpBbmlWRmRZb25KNFlBR2x0TXc2K2p1Y1VtMG1UQU9TRGZVSGRwaEJGUjE3bXd3LzRqZ05iLzRteWFNekdxRGpIYlFwYkJiNUs0U1hTVlJKNVlXekMrSlVUdFIvV0FNeWdOYnlESDc3MWhlY3hSQmdKSjJ2ZTcvYlBFOHhPQlV3ZHdDQ0tHcG5uOElCaDJ4K1hob29xSG85N0kvTWV3THhlQk9NL01VMFRjNDZpZEVXeUtUMXIyMlIveFpJUkk2WUdveEZaME9XWitGUi9WNTZVQW1FMG1DenhZU0ZmeXlZakVEMjZFT2NvOWxpZGlqVmlHNC8rWVVUYzMwRGVySHpIdURzKzFiRDl4TmM1TUp2VTBOUlJZUlAyV0ZVL2kvVk10L0NsbXNFYVZwT3NSU082dFNNa2prQ0ZsclZ4NTltbU1CVE5lR09Bck93V2J1Y3c9PQAAAQB4zgpe5lluBbJYaQBWNDxrK0J9V4fnb8KWMmgIGj7ymw++bvV9rkmNtjDixWZkdSbWVQr0WLBpZoye+yQCqWB559BTqinUmIazgRpVFtaggN4RXgJA6V/N9NgOv0Vw0DvN9FI2aU5iRv7nXaNmpkMPlaCngI+2F3FoBuF9GyHsXYaOqDYkMdazT3W757QnP58ZCQT9S98gIcU75yqyWlKZek8UlUtUxSCSTtOyMtWrwag238/OgXv8BlmtQcH9A/XQBmAQlkzbgBVBkWoS0w2aqCM4Q3X7qTOH/Ea+xT/IJVhZgeTXh947kW1unEBEfwF6GZQkQQW+4pH6GEtCGTO/”,“start_date_in_millis”:1570752000000}}
公司地址什么可以随便填写,邮箱要填好,然后收到邮件,进行文件下载。 下载下来,修改里面的内容,主要是把 “basic” 改为 “platinum” 即白金版,“expiry_date_in_millis” 这个时间戳改大点,就够用了。
证书分有三类GOLD(黄金),PLATINUM(白金),ENTERPRISE(企业),我上面把type手动改成了白金版,然后再把过期时间改到了2050年,放入license.json文件中
2、导入license
curl --cacert certs/ca/ca.crt -u elastic:密码 -XPUT 'https://192.168.180.45:9200/_xpack/license' -H "Content-Type: application/json" -d @license.json
命令方式 返回 {“acknowledged”:true,“license_status”:“valid”} 就表示续命成功 。