Elasticsearch Rest Client Encrypted Communication

當(dāng)你需要通過(guò)RestClient連接Elasticsearch,此時(shí)提供的Elasticsearch服務(wù)處于安全考慮塑悼,需要通過(guò)提供的證書(shū)進(jìn)行加密訪(fǎng)問(wèn)馋嗜,也可以通過(guò) HttpClientConfigCallback 配置使用 TLS 的加密通信辐啄。 作為參數(shù)接收的 org.apache.http.impl.nio.client.HttpAsyncClientBuilder 公開(kāi)了多種配置加密通信的方法:setSSLContext澈魄、setSSLSessionStrategysetConnectionManager景鼠,按優(yōu)先級(jí)從最不重要的順序排列。

訪(fǎng)問(wèn)在 HTTP 層上為 TLS 設(shè)置的 Elasticsearch 集群時(shí)痹扇,客戶(hù)端需要信任 Elasticsearch 正在使用的證書(shū)铛漓。 以下是設(shè)置客戶(hù)端以信任已簽署 Elasticsearch 正在使用的證書(shū)的 CA 的示例,當(dāng)該 CA 證書(shū)在 PKCS#12 密鑰庫(kù)中可用時(shí):

Path trustStorePath = Paths.get("/path/to/truststore.p12");
KeyStore truststore = KeyStore.getInstance("pkcs12");
try (InputStream is = Files.newInputStream(trustStorePath)) {
    truststore.load(is, keyStorePass.toCharArray());
}
SSLContextBuilder sslBuilder = SSLContexts.custom()
    .loadTrustMaterial(truststore, null);
final SSLContext sslContext = sslBuilder.build();
RestClientBuilder builder = RestClient.builder(
    new HttpHost("localhost", 9200, "https"))
    .setHttpClientConfigCallback(new HttpClientConfigCallback() {
        @Override
        public HttpAsyncClientBuilder customizeHttpClient(
                HttpAsyncClientBuilder httpClientBuilder) {
            return httpClientBuilder.setSSLContext(sslContext);
        }
    });

下面是我們需要提供Keystore和TrustStore的場(chǎng)景:

public static RestHighLevelClient initRestHighLevelClient() {
        try {
            KeyStore keyStore =KeyStore.getInstance("jceks"); //Depands on your keyStoreType
            keyStore.load(new FileInputStream(keyStorePath), keyStorePwd.toCharArray());

            SSLContextBuilder builder = new SSLContextBuilder();
            builder.loadKeyMaterial(keyStore, keyStorePwd.toCharArray());
            builder.loadTrustMaterial(new File(trustStorePath));

            final SSLContext context = builder.build();
            
            List<HttpHost> hostLists = new ArrayList<>();
            String[] hostList = address.split(",");
            for (String addr : hostList) {
                String host = addr.split(":")[0];
                String port = addr.split(":")[1];
                hostLists.add(new HttpHost(host, Integer.parseInt(port), "https"));
            }
            HttpHost[] httpHost = hostLists.toArray(new HttpHost[]{});
    
            final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
            credentialsProvider.setCredentials(
                AuthScope.ANY, new UsernamePasswordCredentials(userName, password));
            RestClientBuilder restClientBuilder = RestClient
                .builder(httpHost)
                .setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
                  @Override
                  public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpAsyncClientBuilder) {
                    return httpAsyncClientBuilder.setDefaultCredentialsProvider(credentialsProvider).setSSLContext(context);
                  }
                });
            return new RestHighLevelClient(restClientBuilder);
        } catch (Exception e) {
            log.error("=======init RestHighLevelClient faild : " + e.getMessage());
            return null;
        }
    } 

更多其他加密通信場(chǎng)景可參考官網(wǎng):
https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/_encrypted_communication.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末鲫构,一起剝皮案震驚了整個(gè)濱河市浓恶,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌结笨,老刑警劉巖包晰,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異炕吸,居然都是意外死亡杜窄,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)算途,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人蚀腿,你說(shuō)我怎么就攤上這事嘴瓤。” “怎么了莉钙?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵廓脆,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我磁玉,道長(zhǎng)停忿,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任蚊伞,我火速辦了婚禮席赂,結(jié)果婚禮上吮铭,老公的妹妹穿的比我還像新娘。我一直安慰自己颅停,他們只是感情好谓晌,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著癞揉,像睡著了一般纸肉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上喊熟,一...
    開(kāi)封第一講書(shū)人閱讀 51,688評(píng)論 1 305
  • 那天柏肪,我揣著相機(jī)與錄音,去河邊找鬼芥牌。 笑死烦味,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的胳泉。 我是一名探鬼主播拐叉,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼扇商!你這毒婦竟也來(lái)了凤瘦?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤案铺,失蹤者是張志新(化名)和其女友劉穎蔬芥,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體控汉,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡笔诵,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了姑子。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片乎婿。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖街佑,靈堂內(nèi)的尸體忽然破棺而出谢翎,到底是詐尸還是另有隱情,我是刑警寧澤沐旨,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布森逮,位于F島的核電站,受9級(jí)特大地震影響磁携,放射性物質(zhì)發(fā)生泄漏褒侧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望闷供。 院中可真熱鬧烟央,春花似錦、人聲如沸这吻。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)唾糯。三九已至怠硼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間移怯,已是汗流浹背香璃。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留舟误,地道東北人葡秒。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像嵌溢,于是被迫代替她去往敵國(guó)和親眯牧。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容