| 简介: x-pack是elasticsearch的一个收费的扩展包,将权限管理,警告,监视等功能捆绑在一个易于安装的软件包中,x-pack被设计为一个无缝的工作,但是你可以轻松的启用或者关闭一些功能。 |
|---|
版本:
elasticsearch 7.7.1
kibana 7.7.1
系统mac os
一、修改x-pack部分源码
x-pack的lisence校验在elasticsearch-7.7.1/modules/x-pack-core的x-pack-core-7.0.0.jar中,需要使用JD-GUI之类的反编译工具打开
查看x-pack-core-7.0.0.jar包的两个文件:
(找到文件后需要把代码复制出来到你的idea,注意文件在你idea中的文件路径必须要和x-pack-core-7.0.0.jar里的路径一致,不然后面改完编译后再替换回去会有问题)
1.修改验证licence是否有效的类:org.elasticsearch.license.LicenseVerifier
文件位置在org.elasticsearch.license下,将里面两个方法的内容删除直接返回true,如图:
2.修改验证jar包是否被修改的类:org.elasticsearch.xpack.core.XPackBuild
文件位置在org.elasticsearch.xpack.core下,XPackBuild这个文件不同版本源码逻辑可能有些区别,核心思想就是把 CURRENT = 后面方法的参数写死成 "Unknown"就可以了,其他的都不用动,如图:
修改完后编译生成class文件,然后把两个class文件替换到x-pack-core-7.0.0.jar里:
替换方式随意,我这里执行命令替换的
jar -uvf x-pack-core-7.7.1.jar org/elasticsearch/license/LicenseVerifier.class
jar -uvf x-pack-core-7.7.1.jar org/elasticsearch/xpack/core/XPackBuild.class
也可以解压jar包手动替换再压缩
替换完之后再把x-pack-core-7.0.0.jar包替换到elasticsearch下的 /modules/x-pack-core路径中
二、申请license
官方申请地址:https://license.elastic.co/registration
下载下来是一个json格式的文件:
type参数是许可证类型:GOLD(黄金),PLATINUM(白金),ENTERPRISE(企业) 可自行修改
expiry_date_in_millis参数是过期时间,改一个大点的时间
三、禁用elasticsearch安全协议
导入许可证书之前要先关闭xpack安全认证,打开../config/elasticsearch.yml文件在末尾添加:xpack.security.enabled: false
并启动elasticsearch服务:./bin/elasticsearch -d
四、导入license,更新许可
直接从kibana许可管理中更新许可,会提示上传文件,把刚才下好的json格式的license文件上传,看到过期时间改变了就是成功了。
导入成功后把es的安全认证打开:vim elasticsearch.yml
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
五、内置账号创建密码
使用内置帐号需要设置密码,进入elasticsearch bin目录,执行命令:./elasticsearch-setup-passwords interactive
会有一个确认提示,直接 y
然后逐个给内置帐号设置密码,如图:
六、修改kibanna内置账号
vim kibana.yml 修改为刚才设置的帐号密码
elasticsearch.username: "elastic"
elasticsearch.password: "xxxxxx"
重启kibana后访问http://localhost:5601/会弹出登录框:
登录后返回 {“statusCode”:404,”error”:”Not Found”,”message”:”Not Found”} 问题处理:
查看kibana状态 localhost:5601/api/status
确认全部为绿色,清除浏览器cookie即可,这是因为Kibana将用户名/密码对加密,并将其存储在cookie中。当Kibana收到后续请求时,它会解密cookie,提取用户信息,并请求Elasticsearch验证用户名/密码对是否正确。
开启认证后es启动报错问题
ELK 7.8.0 two node cluster “At least one primary shard for the index [.security-7] is unavailable
.security索引损坏了,把损坏的索引删除即可,因为开启认证之后的crul命令要加上认证信息,执行以下命令:
curl --user elastic:123456 -H "Content-Type: application/json" http://localhost:9200/.security-*
其他问题欢迎留言~



