【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"

 

  

原文地址:https://www.cnblogs.com/zhouwenyang/p/14164124.html