1. 程式人生 > 實用技巧 >【spark】elasticsearch自簽證書,spark進行讀寫

【spark】elasticsearch自簽證書,spark進行讀寫

  • 頒發自簽證書

  1) 列出keystore中的證書

keytool -list

  預設情況下,它會在你的 $HOME 目錄下產生一個空的 .keystore 檔案。如要指定 Java 正在用的 keystore 檔案,使用以下引數

keytool -list -keystore $JAVA_HOME/lib/security/cacerts

  注意一下, keystore 檔案都受 密碼 保護。生成新的 keystore 檔案時,會要求你輸入一個新密碼;而當訪問一個已有的 keystore 檔案時,會要求你驗證密碼。  

  2) 獲取es的http證書

./bin/elasticsearch-certutil cert --pem elastic-stack-ca.p12

 在certificate-bundle.zip中獲取ca.crt

openssl s_client -connect google.com:443 < /dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ca.crt

  3) 匯入證書

keytool -import -alias <證書別名> -keystore $JAVA_HOME/jre/lib/security/cacerts -file ca.crt

  匯入時會需要驗證密碼,預設密碼見上面

  4) 儲存keystore 用於程式使用

  • elasticsearch配置

  1) elasticsearch生成金鑰

  執行./bin/elasticsearch-certutil ca 生成elastic-stack-ca.p12

  執行./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12 生成elastic-certificates.p12

  依次輸入生成cert.zip的檔名,節點資訊和IP,會在當前目錄生成一個zip壓縮包。指定

  將elastic-stack-ca.p12elastic-certificates.p12拷貝到config/certs

  修改config/elasticsearch.yml

xpack.security.enabled: true
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
xpack.monitoring.collection.enabled: true

#啟用https
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 

  5) spark讀取es

val df = sparkSession.read
      .format("org.elasticsearch.spark.sql")
      .options(configMap)
      .load()

  其中options 為key-value的es 配置,參考es官方文件

  其中配置ssl:"es.net.ssl.truststore.location","es.net.ssl.truststore.pass"