当前位置: 首页 > 知识库问答 >
问题:

弹性搜索-无法初始化SSL-证书颁发

胡飞舟
2023-03-14

我试图通过PySpark从Elastic Search(版本:7.13.4)获取数据。但是,我得到了这个错误。

org.elasticsearch.hadoop.EsHadoopIllegalStateException: Cannot initialize SSL - parseAlgParameters failed: ObjectIdentifier() -- data isn't an object ID (tag = 48)

我的代码:

import findspark
findspark.init()
from functools import reduce
import time, datetime, argparse,math,configparser,urllib3
from pyspark import SparkContext, SparkConf
from pyspark.sql import SQLContext,SparkSession,Window
from pyspark.sql.functions import split,lit,to_utc_timestamp,hour,dayofweek,round,lower,col,unix_timestamp,pandas_udf,PandasUDFType,mean,date_format,concat,when,first,last,count,sum,ceil,max,asc
from pyspark.sql.types import TimestampType,IntegerType,StringType
from datetime import timedelta
from elasticsearch import Elasticsearch
from elasticsearch.exceptions import NotFoundError
import pyspark.sql.functions as F
from pyspark.sql.functions import*

query = """{
  "query": {
    "match_all": {}
  }
}"""


df = spark.read.format("org.elasticsearch.spark.sql").option("es.nodes", "elasticsearch-svc.namespace") \
                                                         .option("es.port","9200") \
                                                         .option("es.read.metadata", "false") \
                                                         .option("es.mapping.date.rich", "false") \
                                                         .option("es.query", query) \
                                                         .option("es.net.http.auth.user", "elastic-username") \
                                                         .option("es.net.http.auth.pass", "elastic-password") \
                                                         .option("es.net.ssl.keystore.location","file:////my-storage/ssl_certificates/elastic-certificates.p12") \
                                                         .option("es.net.ssl.keystore.pass","mypassword") \
                                                         .option("es.net.ssl.keystore.type","PKCS12") \
                                                         .option("es.net.ssl.truststore.location","file:////my-storage/ssl_certificates/elastic-certificates.p12") \
                                                         .option("es.net.ssl.truststore.pass","mypassword") \
                                                         .option("es.net.ssl","true") \
                                                         .option("es.net.ssl.cert.allow.self.signed","true") \
                                                         .load("my_index")

完全错误:

Py4JJavaError:调用o673时出错。负载:组织。elasticsearch。hadoop。eShadoPillegalArgumentException:无法检测ES版本-通常情况下,如果网络/Elasticsearch群集不可访问,或者在没有正确设置ES的情况下以WAN/云实例为目标时,会发生这种情况。节点。苍白无力的仅在组织中。elasticsearch。hadoop。Rest初始化Utils。org上的discoverClusterInfo(InitializationUtils.java:340)。elasticsearch。火花sql。弹性搜索关系。cfg$lzycompute(DefaultSource.scala:225)位于org。elasticsearch。火花sql。弹性搜索关系。cfg(DefaultSource.scala:223)位于org。elasticsearch。火花sql。弹性搜索关系。位于org的lazySchema$lzycompute(DefaultSource.scala:229)。elasticsearch。火花sql。弹性搜索关系。位于org的lazySchema(DefaultSource.scala:229)。elasticsearch。火花sql。ElasticSearchRelationship$$anonfun$架构$1。在组织中应用(DefaultSource.scala:233)。elasticsearch。火花sql。ElasticSearchRelationship$$anonfun$架构$1。在scala上应用(DefaultSource.scala:233)。选项位于org的getOrElse(Option.scala:121)。elasticsearch。火花sql。弹性搜索关系。组织中的架构(DefaultSource.scala:233)。阿帕奇。火花sql。处决数据源。数据源。位于组织的resolveRelation(DataSource.scala:403)。阿帕奇。火花sql。DataFrameReader。在组织中加载v1source(DataFrameReader.scala:223)。阿帕奇。火花sql。DataFrameReader。在组织加载(DataFrameReader.scala:211)。阿帕奇。火花sql。DataFrameReader。在sun上加载(DataFrameReader.scala:178)。反映NativeMethodAccessorImpl。在sun调用0(本机方法)。反映NativeMethodAccessorImpl。在sun上调用(NativeMethodAccessorImpl.java:62)。反映DelegatingMethodAccessorImpl。在java上调用(DelegatingMethodAccessorImpl.java:43)。lang.reflect。方法在py4j调用(方法java:498)。反射MethodInvoker。在py4j上调用(MethodInvoker.java:244)。反射反光发动机。在py4j处调用(ReflectionEngine.java:357)。网关。在py4j上调用(Gateway.java:282)。命令。AbstractCommand。py4j上的invokeMethod(AbstractCommand.java:132)。命令。CallCommand。在py4j上执行(CallCommand.java:79)。网关连接。在java上运行(GatewayConnection.java:238)。lang.Thread。运行(Thread.java:748)由:org引起。elasticsearch。hadoop。EshadoPillegalStateException:无法初始化SSL-parseAlgParameters失败:ObjectIdentifier()--数据不是组织中的对象ID(标记=48)。elasticsearch。hadoop。RestCommonHTTP。SSLSocketFactory。在org上创建sslcontext(SSLSocketFactory.java:175)。elasticsearch。hadoop。RestCommonHTTP。SSLSocketFactory。位于org的getSSLContext(SSLSocketFactory.java:160)。elasticsearch。hadoop。RestCommonHTTP。SSLSocketFactory。在org上创建socket(SSLSocketFactory.java:129)。阿帕奇。平民httpclient。HttpConnection。在org上打开(HttpConnection.java:707)。阿帕奇。平民httpclient。HttpMethodDirector。在org上执行withretry(HttpMethodDirector.java:387)。阿帕奇。平民httpclient。HttpMethodDirector。组织上的executeMethod(HttpMethodDirector.java:171)。阿帕奇。平民httpclient。HttpClient。组织上的executeMethod(HttpClient.java:397)。阿帕奇。平民httpclient。HttpClient。组织上的executeMethod(HttpClient.java:323)。elasticsearch。hadoop。RestCommonHTTP。CommonHttpTransport。doExecute(CommonHttpTransport.java:685)位于org。elasticsearch。hadoop。RestCommonHTTP。CommonHttpTransport。在org上执行(CommonHttpTransport.java:664)。elasticsearch。hadoop。RestNetworkClient。在org上执行(NetworkClient.java:116)。elasticsearch。hadoop。RestRestClient。在org上执行(RestClient.java:432)。elasticsearch。hadoop。RestRestClient。在org上执行(RestClient.java:428)。elasticsearch。hadoop。RestRestClient。在org上执行(RestClient.java:388)。elasticsearch。hadoop。RestRestClient。在org上执行(RestClient.java:392)。elasticsearch。hadoop。RestRestClient。在org上获取(RestClient.java:168)。elasticsearch。hadoop。RestRestClient。mainfo(RestClient.java:745)位于org。elasticsearch。hadoop。Rest初始化Utils。DiscoveryClusterInfo(InitializationUtils.java:330)。。。23更多原因:java。io。IOException:parseAlgParameters失败:ObjectIdentifier()--数据不是sun上的对象ID(标记=48)。安全pkcs12.pkcs12密钥库。sun上的parseAlgParameters(PKCS12KeyStore.java:816)。安全pkcs12.pkcs12密钥库。java上的engineLoad(PKCS12KeyStore.java:2018)。安全密钥库。在组织加载(KeyStore.java:1445)。elasticsearch。hadoop。RestCommonHTTP。SSLSocketFactory。在org上加载keystore(SSLSocketFactory.java:200)。elasticsearch。hadoop。RestCommonHTTP。SSLSocketFactory。在org上加载keymanagers(SSLSocketFactory.java:215)。elasticsearch。hadoop。RestCommonHTTP。SSLSocketFactory。createSSLContext(SSLSocketFactory.java:173)。。。40多个原因:java。io。IOException:ObjectIdentifier()--数据在sun上不是对象ID(标记=48)。安全util。ObjectIdentifier。(ObjectIdentifier.java:257)位于sun。安全util。DerInputStream。com上的getOID(DerInputStream.java:314)。太阳加密。供应商。PBES2参数。java上的engineInit(PBES2Parameters.java:267)。安全算法参数。sun的init(AlgorithmParameters.java:293)。安全pkcs12.pkcs12密钥库。parseAlgParameters(PKCS12KeyStore.java:812)。。。45个以上

我认为密钥库类型可能是问题所在,并尝试将. p12文件转换为. jks文件,但它也不起作用

错误:

keytool error: java.io.IOException: parseAlgParameters failed: ObjectIdentifier() -- data isn't an object ID (tag = 48)

共有1个答案

汪典
2023-03-14

问题在我转换<代码>后得到修复。p12文件到。jks文件使用键工具

cmd转换<代码>。p12文件到。jks文件=

keytool-importkeystore-srckeystore/my storage/ssl\u证书/弹性证书。p12-destkeystore/我的存储/ssl\U证书/弹性证书。jks-srcstoretype PKCS12-deststoretype jks-deststorepass

如果试图在使用openjdk-1.8.0的计算机上执行上述命令,可能会出现以下错误。要避免错误,请从具有openjdk版本“16”的计算机上执行keytool命令

keytool error: java.io.IOException: parseAlgParameters failed: ObjectIdentifier() -- data isn't an object ID (tag = 48)
df = spark.read.format("org.elasticsearch.spark.sql").option("es.nodes", "elasticsearch-svc.namespace") \
                                                         .option("es.port","9200") \
                                                         .option("es.read.metadata", "false") \
                                                         .option("es.mapping.date.rich", "false") \
                                                         .option("es.query", query) \
                                                         .option("es.net.http.auth.user", "elastic-username") \
                                                         .option("es.net.http.auth.pass", "elastic-password") \
                                                         .option("es.net.ssl.keystore.location","file:////my-storage/ssl_certificates/elastic-certificates.jks") \
                                                         .option("es.net.ssl.keystore.pass","mypassword") \
                                                         .option("es.net.ssl.keystore.type","JKS") \
                                                         .option("es.net.ssl.truststore.location","file:////my-storage/ssl_certificates/elastic-certificates.jks") \
                                                         .option("es.net.ssl.truststore.pass","mypassword") \
                                                         .option("es.net.ssl","true") \
                                                         .option("es.net.ssl.cert.allow.self.signed","true") \
                                                         .load("my_index")

 类似资料:
  • 我正在Windows服务器2016上的wamp上使用洋红色社区版2.2。每当我尝试登录以通过系统同步您的Magento市场购买时 “SSL 证书问题:无法获取本地颁发者证书” 我尝试了这个论坛中其他一些线程中提供的解决方案来下载cacert。pem并在php.ini中执行以下设置 curl . cainfo = " C:\ wamp 64 \ bin \ PHP \ PHP 7 . 1 . 9 \

  • 我正在尝试打开一个htttps网站。网址是前。https://x.xx.xx.xx/.我已经写了打击代码。 字符串url=”https://x.xx.xx.xx/"; URL obj=新URL(URL); HttpURLConnection con=(HttpURLConnection)obj。openConnection(); //可选的默认值是GETcon.setRequest estmeth

  • 我正在Windows7上运行PHP版本5.6.3作为XAMPP的一部分。 当我尝试使用Mandrill API时,我得到以下错误: 未捕获异常“Mandrill_HttpError”,消息为“API调用消息/send-template失败:SSL证书问题:无法获取本地颁发者证书” 我已经尝试了在StackOverflow上读到的所有内容,包括向php.ini文件添加以下内容: 当然可以从http:

  • 问题内容: 我正在Windows 7上将PHP版本5.6.3作为XAMPP的一部分运行。 当我尝试使用Mandrill API时,出现以下错误: 消息“ API调用消息/发送模板失败”的未捕获异常“ Mandrill_HttpError”:SSL证书问题:无法获取本地颁发者证书 我已经尝试了我在StackOverflow上阅读的所有内容,包括将以下内容添加到php.ini文件中: 当然,还可以从h

  • 问题内容: 我在本地开发环境上使用WAMP,并尝试从信用卡中扣款,但收到错误消息: cURL错误60:SSL证书问题:无法获取本地颁发者证书 我在Google上进行了很多搜索,很多人建议我下载此文件:cacert.pem,将其放在某个位置,然后在php.ini中引用它。这是我的php.ini中的部分: 但是,即使多次重新启动服务器并更改了路径后,我仍然收到相同的错误消息。 我使用来自Apache模

  • 我在Google上搜索了很多,很多人建议我下载这个文件:cacert.pem,把它放在某个地方,并在我的php.ini中引用它。这是我的php.ini中的部分: 然而,即使在重新启动服务器几次并更改路径后,我也会得到相同的错误消息。 我使用Apache模块中的WAMP并启用ssl_module。在PGP扩展中,我启用了php_curl。 这是我正在运行的代码: