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安装的es和kibana) 进入docker-es进入x-pack-core的目录,替换掉这个东西。接下来展示如何替换。如果嫌弃麻烦的 可以结尾自取class文件或者jar包直接替换。
docker exec -it es6.4.2 /bin/bash cd modules/x-pack-core/
yum update && yum install lrzsz sz x-pack-core-6.4.2.jar
替换成下面的代码
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; } }
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文件
然后把刚才的依赖加上。重新吧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上传就行了方便。
打开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
现在就来修改一下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完成。
ok!到这里就完成了