日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

破解elasticsearch(制作破解版docker镜像)

發布時間:2023/12/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 破解elasticsearch(制作破解版docker镜像) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

破解elasticsearch(制作破解版docker鏡像)

本文僅用于學習交流,要使用elasticsearch的付費功能,請通過正規渠道購買platinum(白金)版。

一、部署純凈版elasticsearch和kibana容器
1、修改宿主機vm.max_map_count的值
使用docker運行elasticsearch,要求宿主機系統的m.max_map_count的值不小于262144,否則elasticsearch鏡像無法運行。
編輯“/etc/sysctl.conf”文件,在其中增加一行:

vm.max_map_count=262144

保存后,執行“sysctl -p”讓配置生效。

2、部署純凈版elasticsearch
拉取elasticsearch-6.5.4鏡像

docker pull elasticsearch:6.5.4

運行elasticsearch-6.5.4

docker run -d -p 9200:9200 --name=elasticsearch-6.5.4 -e xpack.security.enabled=false elasticsearch:6.5.4

注意:需要加上“-e xpack.security.enabled=false”,否則導入license失敗。

3、部署kibana
如果使用命令行導入證書,可以不用部署kibana。
拉取kibana-6.5.4鏡像

docker pull kibana:6.5.4

運行kibana-6.5.4

docker run -d -p 5601:5601 --name=kibana-6.5.4 -e ELASTICSEARCH_URL=http://192.168.241.13:9200 kibana:6.5.4

二、破解和替換x-pack-core-6.5.4.jar
1、創建LicenseVerifier.java和XPackBuild.java文件,文件內容如下:
LicenseVerifier.java

package org.elasticsearch.license;public class LicenseVerifier {public static boolean verifyLicense(License license, byte[] publicKeyData) {return true;}public static boolean verifyLicense(License license) {return true;} }

XPackBuild.java

package org.elasticsearch.xpack.core;import java.net.URISyntaxException; import java.net.URL; import java.nio.file.Path;import org.elasticsearch.common.SuppressForbidden; import org.elasticsearch.common.io.PathUtils;public class XPackBuild {public static XPackBuild CURRENT;private String shortHash;private String date;static {Path path = getElasticsearchCodebase();String shortHash = null;String date = null;Label_0157:{shortHash = "Unknown";date = "Unknown";}CURRENT = new XPackBuild(shortHash, date);}@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 e) {throw new RuntimeException(e);}}XPackBuild(String shortHash, String date) {this.shortHash = shortHash;this.date = date;}public String shortHash() {return this.shortHash;}public String date() {return this.date;} }

2、獲取x-pack-core-6.5.4.jar、lucene-core-7.5.0.jar、elasticsearch-core-6.5.4.jar
lucene-core-7.5.0.jar和elasticsearch-core-6.5.4.jar在elasticsearch容器的/usr/share/elasticsearch/lib目錄下,x-pack-core-6.5.4.jar在elasticsearch容器的/usr/share/elasticsearch/modules/x-pack-core目錄下,使用docker cp命令將他們拷貝到宿主機的/tmp目錄下:

docker cp elasticsearch-6.5.4:/usr/share/elasticsearch/lib/lucene-core-7.5.0.jar /tmp docker cp elasticsearch-6.5.4:/usr/share/elasticsearch/lib/elasticsearch-core-6.5.4.jar /tmp docker cp elasticsearch-6.5.4:/usr/share/elasticsearch/modules/x-pack-core/x-pack-core-6.5.4.jar /tmp

3、編譯LicenseVerifier.java和XPackBuild.java文件
編譯LicenseVerifier.java和XPackBuild.java文件的方法有很多種,我是通過eclipse進行編譯:
在eclipse中新建java工程,創建LicenseVerifier和XPackBuild類,注意這兩個類所在的包。在工程中導入依賴的jar包:x-pack-core-6.5.4.jar、lucene-core-7.5.0.jar、elasticsearch-core-6.5.4.jar。在eclipse中clean一下工程,即可到工程的bin目錄下找到對應的class文件。
4、更新x-pack-core-6.5.4.jar
用我們的LicenseVerifier.class和XPackBuild.class文件替換x-pack-core-6.5.4.jar中對應的文件。可用winrar打開及操作jar包。
用docker cp命令將破解過后的x-pack-core-6.5.4.jar拷貝到elasticsearch容器中,替換原來的jar包

docker cp /tmp/x-pack-core-6.5.4.jar elasticsearch-6.5.4:/usr/share/elasticsearch/modules/x-pack-core

重啟elasticsearch容器

docker restart elasticsearch-6.5.4

三、申請和修改elasticsearch證書
elasticsearch-6.5.4自帶一個永久有效的basic版證書,可以使用基本功能,現在將它替換為platinum(白金)版。
如果不想申請證書,可直接使用我申請并修改好的證書:

{"license" : {"uid" : "a32fe4d9-2d7f-4b0a-865e-83c6124359e4","type" : "platinum","issue_date_in_millis" : 1548979200000,"expiry_date_in_millis" : 4102415999000,"max_nodes" : 1000,"issued_to" : "anyone","issuer" : "Web Form","signature" : "AAAAAwAAAA1shrho7lSxsO6DglEuAAABmC9ZN0hjZDBGYnVyRXpCOW5Bb3FjZDAxOWpSbTVoMVZwUzRxVk1PSmkxaktJRVl5MUYvUWh3bHZVUTllbXNPbzBUemtnbWpBbmlWRmRZb25KNFlBR2x0TXc2K2p1Y1VtMG1UQU9TRGZVSGRwaEJGUjE3bXd3LzRqZ05iLzRteWFNekdxRGpIYlFwYkJiNUs0U1hTVlJKNVlXekMrSlVUdFIvV0FNeWdOYnlESDc3MWhlY3hSQmdKSjJ2ZTcvYlBFOHhPQlV3ZHdDQ0tHcG5uOElCaDJ4K1hob29xSG85N0kvTWV3THhlQk9NL01VMFRjNDZpZEVXeUtUMXIyMlIveFpJUkk2WUdveEZaME9XWitGUi9WNTZVQW1FMG1DenhZU0ZmeXlZakVEMjZFT2NvOWxpZGlqVmlHNC8rWVVUYzMwRGVySHpIdURzKzFiRDl4TmM1TUp2VTBOUlJZUlAyV0ZVL2kvVk10L0NsbXNFYVZwT3NSU082dFNNa2prQ0ZsclZ4NTltbU1CVE5lR09Bck93V2J1Y3c9PQAAAQAvQHMWjXz4U3J5KijnLKZL7TN9zbGBEhah88ODmMtOyGl6YuSDeK+RQuDC1LKCEIKtWt85uPQqIZktTnZEr1gXdlOOGOSrqvPXdHcZuQDM7qjw1nnzLZNwDsbWn5PZX06INTFCEYLMLgD9n3uwTKH8QBrgmFXTy8WffSrDUcDUY5WgQTaKW1LR1KlNsgVrnn1WB+s/IvP2y3XGtMLmnCoeJHCYCTROxcA/QpDLEqZzBd0v0vJ9KKtgZu6Hqc/u7JL+ain1YvngSD9dICb7w7rIOq/uhM1Fz0WhYJ6+Bhgoi4yurBUfZyZRznxND6NPrSIXUdRHqyT+pHXSTh9HP25D","start_date_in_millis" : 1548979200000} }

1、去官網申請證書,官網地址:https://license.elastic.co/registration。
這里申請到的也是basic版的證書,不過沒有關系,在導入之前,我們將其修改為platinum版即可。

除了電子郵箱地址,其他可以隨便填。電子郵箱地址用來接收證書下載地址,一定要填有效的郵箱。之后會收到郵件,如下圖所示:

從郵件中的鏈接進去,根據提示下載好證書,證書如下:

2、修改證書
我們只需要修改證書中的“type”和“expiry_date_in_millis”字段的值。
“type”的值修改為:“platinum”
“expiry_date_in_millis”的值修改為:4102415999000
“expiry_date_in_millis”是過期時間,是毫秒為單位的時間戳,設置為4102415999000表示2099-12-31 23:59:59過期。

四、上傳和更新elasticsearch證書
如果不想用kibana導入,可直接使用命令行導入證書。假設已經將編輯好的證書放在/tmp目錄,使用如下命令導入證書:

curl -XPUT -u elastic 'http://192.168.241.13:9200/_xpack/license' -H "Content-Type: application/json" -d @/tmp/es-license.json

輸入完上述命令后,會提示輸入密碼,不用管,直接回車。

在瀏覽器中輸入kibana的服務地址,打開kibana。
因為我的宿主機是IP地址為192.168.241.13的虛擬機,上午部署kibana的時候,將服務端口映射到了5601(5601也是kibana默認服務端口),所以我應該在地址欄輸入:http://192.168.241.13:5601。
打開后,先選擇左邊菜單欄的Management,再選擇License Management。

下面按圖示操作:


上傳成功后,顯示如下:

如果不使用kibana,可在瀏覽器中直連elasticsearch查看授權信息,在瀏覽器地址欄中輸入:

http://192.168.241.13:9200/_license

結果如下:

{"license" : {"status" : "active","uid" : "elasticsearch-6.5.4-anyone","type" : "platinum","issue_date" : "2019-02-01T00:00:00.000Z","issue_date_in_millis" : 1548979200000,"expiry_date" : "2099-12-31T15:59:59.000Z","expiry_date_in_millis" : 4102415999000,"max_nodes" : 1000,"issued_to" : "anyone","issuer" : "Web Form","start_date_in_millis" : 1548979200000} }

五、生成密鑰
一般破解主要是為了使用X-PACK的權限控制功能,而開啟權限控制功能的elasticsearch集群,各節點中必須使用SSL通信,必須使用密鑰文件。elasticsearch提供了一個工具生成密鑰。
下面只是簡單講解如何生成證書和密鑰,以及說明下當時遇到的坑,更詳細的內容,請參閱官網:https://www.elastic.co/guide/en/elasticsearch/reference/6.3/configuring-tls.html#node-certificates
1、生成ca證書
進入elasticsearch容器

docker exec -it elasticsearch-6.5.4 /bin/bash

在容器中創建密鑰文件目錄(下述命令在容器中執行)

mkdir /usr/share/elasticsearch/config/certs

注意:生成的密鑰文件一定要在/usr/share/elasticsearch/config目錄或其子目錄下,否則后面啟用SSL的時候,會提示沒有權限讀取密鑰文件。至于原因,我也不知道,這是一個很奇怪的現象,當時弄了我一天才發現這個現象,當時我是將密鑰文件放在/usr/share/elasticsearch/certs下,文件和目錄權限都給到777,還是提示沒有權限。
生成ca證書(下述命令在容器中執行)

cd /usr/share/elasticsearch/config/certs /usr/share/elasticsearch/bin/elasticsearch-certutil ca

這個工具會在當前目錄下生成一個elastic-stack-ca.p12文件,我們進到/usr/share/elasticsearch/config/certs目錄執行,后面就不用拷貝了。這個命令會提示給證書文件輸入一個密碼,如果不想設置,直接回車就可以了,相當于空密碼。

2、生成密鑰文件(下述命令在容器中執行)

cd /usr/share/elasticsearch/config/certs /usr/share/elasticsearch/bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12

這個命令會提示輸入證書的密碼和密鑰文件的密碼,如果上一步中沒有設置密碼,提示輸入證書密碼時直接回車就好。密鑰文件的密碼也是一樣,不想設置就直接回車。
命令執行完畢后,會在當前目錄生成elastic-certificates.p12文件。

3、設置文件目錄的屬主和權限(下述命令在容器中執行)

chown -R elasticsearch /usr/share/elasticsearch/config/certs chmod 644 /usr/share/elasticsearch/config/certs/*.p12

在容器中,elasticsearch的工作目錄屬主為elasticsearch,而我們剛才創建的目錄和文件屬主都是root,修改為elasticsearch保持一致,其實屬主不改也不要緊。第二條命令修改文件權限為所有用戶和組可讀,確保容器運行時能讀到密鑰文件。(生成密鑰文件elastic-certificates.p12后,證書文件elastic-stack-ca.p12已經用不上了,除非還需要生成別的密鑰)

六、生成破解版版鏡像
使用docker commit命令將破解好的容器提交為鏡像。

docker commit elasticsearch-6.5.4 elasticsearch-cracked:6.5.4

實踐表明,授權信息是存儲在elasticsearch的數據目錄下(即配置文件中“path.data”指定的路徑),如果將鏡像中的這個目錄映射到宿主機(實踐中一般會這么做),此目錄會被宿主機目錄覆蓋,授權信息就會沒有了,需要重新授權。因此鏡像的作用主要在于不必重新破解和替換x-pack-core-6.5.4.jar包,以及部署集群時不用拷貝密鑰文件到各個節點。

總結

以上是生活随笔為你收集整理的破解elasticsearch(制作破解版docker镜像)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。