- 颁发自签证书
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.p12
和elastic-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"