1. 程式人生 > >es上安裝x-park TLS/SSL認證

es上安裝x-park TLS/SSL認證

在es叢集上安裝TLS。

重要
如果您是在現有群集上首次安裝X-Pack,則必須執行完整群集重新啟動。安裝X-Pack後,必須在群集中的所有節點上啟用安全性和安全性才能使群集正常執行。升級時通常可以執行滾動升級。

這裡寫圖片描述


1. 要在Elasticsearch中安裝X-Pack:

  • 1.1 .Elasticsearch,Kibana(一個開源的分析與視覺化平臺,搜尋、檢視、互動存放在Elasticsearch索引裡的資料)和Logstash(分析log日誌)的外掛包含在同一個zip檔案中。如果您已下載此檔案以在其中一個其他產品上安裝X-Pack,則可以重複使用相同的檔案

    1.2 將zip檔案傳輸到離線機器上的臨時目錄。(不要將檔案放在Elasticsearch外掛目錄中。)

  • 在ES_HOME群集中的每個節點上 執行

bin/elasticsearch-plugin install x-pack
X-Pack需要許可權才能使Elasticsearch啟動機器學習分析引擎。本地控制器確保啟動的程序是有效的機器學習元件。
X-Pack安全性使您能夠在您的彈性搜尋叢集中對流量進行加密。連線使用傳輸層安全性(TLS)進行保護,這通常稱為“SSL”。

警告
沒有加密的叢集可以以純文字的方式傳送所有資料,包括密碼,並且不能安裝允許x包安全的許可證。
下面的步驟描述瞭如何在彈性堆疊的各個元件上啟用加密。您必須執行適用於您的叢集的每一個步驟。
為每個彈性搜尋節點生成一個私鑰和X.509證書。看到生成節點證書。
在叢集中配置每個節點,以標識自己使用其簽名證書並在傳輸層上啟用TLS。還可以在HTTP層上啟用TLS。在叢集中的節點之間進行加密通訊,並對HTTP客戶端通訊進行加密。
配置X-Pack監視以使用加密連線。看到監控和安全。
配置Kibana,以加密瀏覽器和Kibana伺服器之間的通訊,並通過HTTPS連線到彈搜尋。參見在Kibana中配置安全性。
配置logstorage以使用TLS加密。請參閱在logstorage中配置安全性。
配置Beats以使用加密連線。看到跳動和安全。
配置Java傳輸客戶機以使用加密通訊。參見Java客戶機和安全性。

配置Apache Hadoop的彈性搜尋以使用安全傳輸。參閱Apache Hadoop安全性的彈性搜尋。

加密通訊Elasticsearch
X-Pack安全性使您能夠在您的彈性搜尋叢集中對流量進行加密。使用傳輸層安全性(TLS/SSL)保護連線。
警告
沒有加密的叢集可以以純文字的方式傳送所有資料,包括密碼,並且不能安裝允許x包安全的許可證。
為了啟用加密,您需要對叢集中的每個節點執行以下步驟:
安裝X-Pack Elasticsearch。
生成一個私鑰和X.509證書。
每個節點配置為:
需要:在傳輸層啟用TLS。

建議:在HTTP層上啟用TLS

certutil工具講解

引數
ca
指定生成新的本地證書頒發機構(CA)。此引數不能與csr或cert引數一起使用。
cert
指定生成新的X.509證書和金鑰。此引數不能與csr或ca引數一起使用。
企業社會責任
指定生證書籤名請求。此引數不能與ca或cert引數一起使用。
——ca < file_path >
指定現有CA金鑰對的路徑(在PKCS#12格式中)。此引數不能與ca或csr引數一起使用。
——ca-cert < file_path >
指定現有CA證書的路徑(在PEM格式中)。您還必須指定-ca-key引數。ca-cert引數不能與ca或csr引數一起使用。
——ca-dn <名稱>
定義用於生成CA證書的專有名稱(DN)。預設值是CN=Elastic Certificate Tool Autogenerated CA.此引數不能與csr引數一起使用。
——ca-key < file_path >
指定現有CA私鑰的路徑(在PEM格式中)。您還必須指定-ca-cert引數。ca-key引數不能與ca或csr引數一起使用。
——ca-pass <密碼>
為現有的CA私鑰或生成的CA私鑰指定密碼。此引數不能與ca或csr引數一起使用。
——天< n >
指定一個整數值,它表示生成的證書有效的天數。預設值是1095。此引數不能與csr引數一起使用。
——dns < domain_name >
指定一個以逗號分隔的DNS名稱列表。此引數不能與ca引數一起使用。
- e < KeyValuePair >
配置設定。
- h,幫助
返回所有的命令引數。
——在< input_file >
指定用於在靜默模式下執行的檔案。輸入檔案必須是YAML檔案。此引數不能與ca引數一起使用。
——ip < IP_addresses >
指定一個以逗號分隔的IP地址列表。此引數不能與ca引數一起使用。
——keep-ca-key
當在cert模式中使用自動生成的CA時,指定保留CA私鑰以供將來使用。
——keysize <位元>生成
定義生成的RSA金鑰中使用的位元數。預設值是2048。
——多個
指定為多個例項生成檔案。此引數不能與ca引數一起使用。
——名稱< file_name >
指定生成的證書的名稱。此引數不能與ca引數一起使用。
——從< file_path >
指定輸出檔案的路徑。
——通過<密碼>
指定生成的私鑰的密碼。
- - - pem
用PEM格式生成證書和金鑰,而不是PKCS#12。此引數不能與csr引數一起使用。
- s,沉默
顯示最小輸出。

- v,詳細

顯示詳細的輸出。

生成節點證書

    TLS要求X.509證書對正在進行通訊的應用程式進行加密和身份驗證。為了使節點之間的通訊真正安全,必須對證書進行驗證。在彈性搜尋叢集中驗證證書真實性的推薦方法是信任簽署證書的證書頒發機構(CA)。通過這樣做,當節點被新增到叢集中時,它們只需要使用由相同CA簽名的證書,並且節點被自動允許加入叢集。此外,還建議證書包含與節點的IP地址和DNS名稱對應的主題替代名稱(SAN),以便可以執行主機名驗證。

為了簡化為彈性堆疊生成證書的過程,一個命令列工具certutil已經包含在X-Pack中。該工具負責生成CA並與CA. certutil簽署證書,可以通過使用輸入檔案以互動方式或在靜默模式中使用。certutil工具還支援生成證書籤名請求(CSR),從而可以使用一個商業或組織特定的CA來簽署證書。例如:

1.可選:為您的彈性搜尋叢集建立一個證書頒發機構。

例如,使用certutil ca命令:

bin/x-pack/certutil ca
您可以配置叢集,以信任所有具有此CA簽名的證書的節點。

該命令輸出一個檔案,預設名稱是彈-stack-ca.p12。該檔案是一個PKCS#12金鑰儲存庫,其中包含您的CA的公共證書和用於為每個節點簽署證書的私鑰。

certutil命令還提示您輸入密碼以保護檔案和金鑰。如果您計劃將來在叢集中新增更多的節點,請保留該檔案的副本並記住它的密碼。

2.為叢集中的每個節點生成證書和私鑰。

例如,使用certutil cert命令:
bin/x-pack/certutil cert --ca elastic-stack-ca.p12
輸出是一個PKCS#12金鑰儲存庫,其中包括節點證書、節點金鑰和CA證書。
還會提示輸入密碼。您可以為您的證書和金鑰輸入密碼,或者您可以按enter鍵將密碼留空。
預設情況下,certutil生成的證書中沒有主機名資訊(也就是說,它們沒有任何主題替代名稱欄位)。這意味著您可以為叢集中的每個節點使用證書,但是您必須關閉主機名驗證,如下面的配置所示。

如果您希望在叢集中使用主機名驗證,請在每個節點上執行certutil cert命令,並提供——名稱、dns和——ip選項。您應該保護輸出檔案,因為它們包含例項的私鑰。

或者,如果您想使用某個商業或組織特定的CA,您可以使用certutil csr命令為叢集中的節點生成證書籤名請求(csr)。有關更多資訊,請參閱certutil。

在無聲模式下使用certutil。

要使用靜默模式的操作,您必須建立包含有關例項資訊的YAML檔案。它必須符合下列格式:

instances:
  - name: "node1" 
    ip: 
      - "192.0.2.1"
    dns: 
      - "node1.mydomain.com"
  - name: "node2"
    ip:
      - "192.0.2.2"
      - "198.51.100.1"
  - name: "node3"
  - name: "node4"
    dns:
      - "node4.mydomain.com"
      - "node4.internal"
  - name: "CN=node5,OU=IT,DC=mydomain,DC=com"
    filename: "node5" 
1.例項的名稱。這可以是一個簡單的字串值,也可以是一個專有名稱(DN)。這是唯一需要的欄位。2.表示此例項的IP地址的可選字串陣列。允許IPv4和IPv6值。這些值作為主題替換名稱新增。3.表示此例項的DNS名稱的可選字串陣列。這些值作為主題替換名稱新增。4.用於此例項的檔名。此名稱用作包含輸出中例項檔案的目錄的名稱。它也用於目錄中檔案的名稱。這個檔名不應該有副檔名。注意:如果為例項提供的名稱不代表有效的檔名,那麼檔名欄位必須存在。

當YAML檔案準備就緒時,可以使用certutil命令生成證書或證書籤名請求。只需使用-in引數指定檔案的位置。例如:

bin/x-pack/certutil cert --silent --in instances.yml --out test1.zip --pass testpassword
這個命令生成一個壓縮test1。zip檔案。解壓輸出檔案後,在例項中列出的每個例項都有一個目錄。yml檔案。每個例項目錄都包含一個PKCS#12 (.p12)檔案,其中包含例項證書、例項私鑰和CA證書。

您還可以使用YAML檔案來生成證書籤名請求。例如:

bin/x-pack/certutil csr --silent --in instances.yml --out test2.zip --pass testpassword
該命令生成一個壓縮檔案,該檔案包含每個例項的目錄。每個例項目錄都包含一個證書籤名請求(*。csr檔案)和私鑰(*。關鍵檔案)。

3.將節點證書複製到適當的位置。
    將適用的.p12檔案複製到每個節點的彈性搜尋配置目錄中的目錄中。例如,/home/es/config/certs.不需要將CA檔案複製到這個目錄。對於要配置的每個附加彈性產品,請將證書複製到相關的配置目錄。

請注意
如果您選擇不使用certutil,那麼您獲得的證書必須允許clientAuth和serverAuth,如果擴充套件的鍵使用擴充套件存在。證書需要在PEM或PKCS#12格式中。儘管不需要,但強烈建議證書包含節點的DNS名稱和/或IP地址,以便使用主機名驗證。

 對叢集中的節點之間的通訊進行加密。

    傳輸網路層用於叢集中節點之間的內部通訊。當啟用X-Pack安全性時,必須使用TLS確保節點之間的通訊是加密的。

1.生成節點證書。

2.啟用TLS並指定訪問節點證書所需的資訊。
        如果已簽名的證書是PKCS#12格式,請將以下資訊新增到彈性搜尋。每個節點的yml檔案:

xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate 
xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12 
xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12 
1.如果您使用了——dns或——使用certutil cert命令的ip選項,並且您希望啟用嚴格的主機名檢查,那麼將驗證模式設定為full。

2.如果為每個節點建立單獨的證書,則可能需要在每個節點上定製此路徑。如果檔名與節點名匹配,您可以使用certs/${node.name}.p12格式。

3.certutil輸出包括PKCS#12金鑰儲存庫中的CA證書,因此金鑰儲存庫也可以用作信任儲存庫。這個名稱應該與金鑰庫匹配。路徑值。

如果證書是PEM格式,則向彈性搜尋新增以下資訊。每個節點的yml檔案:

xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate 
xpack.security.transport.ssl.key: /home/es/config/x-pack/node01.key 
xpack.security.transport.ssl.certificate: /home/es/config/x-pack/node01.crt 
xpack.security.transport.ssl.certificate_authorities: [ "/home/es/config/x-pack/ca.crt" ] 

1.如果您使用了——dns或——使用certutil cert命令的ip選項,並且您希望啟用嚴格的主機名檢查,那麼將驗證模式設定為full。

2.到節點金鑰檔案的完整路徑。這必須是彈性搜尋配置目錄中的一個位置。

3.節點證書的完整路徑。這必須是彈性搜尋配置目錄中的一個位置。

4.應該信任的CA證書的路徑陣列。這些路徑必須是彈性搜尋配置目錄中的一個位置。

3.如果您使用密碼保護了節點的證書,請將密碼新增到您的彈性搜尋金鑰儲存庫中:

    如果簽署的證書是PKCS#12格式,請使用以下命令:

bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password

bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password
    如果證書是PEM格式,請使用以下命令:
             
bin/elasticsearch-keystore add xpack.security.transport.ssl.secure_key_passphrase
4.重啟Elasticsearch。

        您必須執行一個完整的叢集重啟。配置為使用TLS的節點不能與使用未加密網路的節點通訊(反之亦然)。啟用TLS之後,您必須重新啟動所有節點,以保持跨叢集的通訊。

請注意

所有與tls相關的節點設定都被認為是高度敏感的,因此不會通過節點info API公開任何這些設定的更多資訊,參見安全設定。

                                                    加密HTTP客戶端通訊

當啟用X-Pack安全性時,您可以選擇使用TLS來確保HTTP客戶機和叢集之間的通訊被加密。

  注意:強烈建議在HTTP層上啟用TLS,但不是必需的。如果您在彈性搜尋中啟用了HTTP層上的TLS,那麼您可能需要在彈性堆疊的其他部分和您使用的任何彈性搜尋客戶端進行配置更改。

    1.如果您還沒有這樣做,請生成節點證書。
    2.啟用TLS並指定訪問節點證書所需的資訊。
            如果證書是PKCS#12格式,將以下資訊新增到彈性搜尋。每個節點的yml檔案:

xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.keystore.path: certs/elastic-certificates.p12 
xpack.security.http.ssl.truststore.path: certs/elastic-certificates.p12 

1.如果為每個節點建立單獨的證書,則可能需要在每個節點上定製此路徑。如果檔名與節點名匹配,您可以使用certs/${node.name}.p12格式。

2.certutil輸出包括PKCS#12金鑰儲存庫中的CA證書,因此金鑰儲存庫也可以用作信任儲存庫。這個名稱應該與金鑰庫匹配。路徑值。

如果證書是PEM格式,則向彈性搜尋新增以下資訊。每個節點的yml檔案:

xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.key:  /home/es/config/x-pack/node01.key 
xpack.security.http.ssl.certificate: /home/es/config/x-pack/node01.crt 
xpack.security.http.ssl.certificate_authorities: [ "/home/es/config/x-pack/ca.crt" ] 

1.到節點金鑰檔案的完整路徑。這必須是彈性搜尋配置目錄中的一個位置。

2.節點證書的完整路徑。這必須是彈性搜尋配置目錄中的一個位置。

3.應該信任的CA證書的路徑陣列。這些路徑必須是彈性搜尋配置目錄中的一個位置。
3.如果您使用密碼保護了節點的證書,請將密碼新增到您的彈性搜尋金鑰儲存庫中:

     如果簽署的證書是PKCS#12格式,請使用以下命令:
      
bin/elasticsearch-keystore add xpack.security.http.ssl.keystore.secure_password

bin/elasticsearch-keystore add xpack.security.http.ssl.truststore.secure_password

      如果證書是PEM格式,請使用以下命令:

bin/elasticsearch-keystore add xpack.security.http.ssl.secure_key_passphrase
4.重啟Elasticsearch。

請注意:
       所有與tls相關的節點設定都被認為是高度敏感的,因此不會通過節點info API公開任何這些設定的更多資訊,參見安全設定。