ElasticSearch - configuration - elasticsearch.yml

Path settings

path:

logs: /data/eslog

data:

- /data/esdata01

- /data/esdata02

- /data/esdata03

 

Cluster name: 一个节点只能加入一个集群。请确保不要在不同的环境中重用相同的集群名称,否则最终可能会导致节点加入错误的集群。

cluster.name: mytest

 

Node name

node.name: es01

node.name: ${HOSTNAME}

 

Network host:一旦为network.host提供自定义设置,elasticsearch就假定您正在从开发模式切换到生产模式,并将许多系统启动检查从警告升级到异常。

network.host: 192.168.1.10

 

Discovery settings:

定制发现实现来进行节点到节点的集群和主选择。扫描端口9300到9305以尝试连接到同一服务器上运行的其他节点。

discovery.zen.ping.unicast.hosts: ["XXX.XXX.XXX.XXX:9300","XXX.XXX.XXX.XXX:9300","XXX.XXX.XXX.XXX:9300"]

discovery.zen.ping.unicast.hosts: - 192.168.1.10:9300 - 192.168.1.11 - seeds.mydomain.com

为了防止数据丢失,必须配置discovery.zen.minimum_master_nodes设置,以便每个符合主资格的节点都知道为了形成集群必须可见的符合主资格的节点的最小数目。如果没有此设置,遭受网络故障的群集有可能将群集拆分为两个独立的群集-一个拆分的大脑-,这将导致数据丢失。

discovery.zen.minimum_master_nodes: 2

 

E:\elasticsearch-9.0.2\bin>elasticsearch-setup-passwords.bat interactive org.elasticsearch.ElasticsearchSecurityException: failed to load SSL configuration [xpack.security.transport.ssl] - cannot read configured [PKCS12] keystore (as a truststore) [E:\elasticsearch-9.0.2\config\certs\elastic-certificates.p12] - this is usually caused by an incorrect password; (a keystore password was provided) at org.elasticsearch.xpack.core.ssl.SSLService.lambda$loadSslConfigurations$11(SSLService.java:622) at java.base/java.util.HashMap.forEach(HashMap.java:1430) at java.base/java.util.Collections$UnmodifiableMap.forEach(Collections.java:1708) at org.elasticsearch.xpack.core.ssl.SSLService.loadSslConfigurations(SSLService.java:618) at org.elasticsearch.xpack.core.ssl.SSLService.<init>(SSLService.java:160) at org.elasticsearch.xpack.core.ssl.SSLService.<init>(SSLService.java:147) at org.elasticsearch.xpack.core.security.CommandLineHttpClient.execute(CommandLineHttpClient.java:149) at org.elasticsearch.xpack.core.security.CommandLineHttpClient.execute(CommandLineHttpClient.java:112) at org.elasticsearch.xpack.security.authc.esnative.tool.SetupPasswordTool$SetupCommand.checkElasticKeystorePasswordValid(SetupPasswordTool.java:340) at org.elasticsearch.xpack.security.authc.esnative.tool.SetupPasswordTool$InteractiveSetup.execute(SetupPasswordTool.java:203) at org.elasticsearch.common.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:55) at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:101) at org.elasticsearch.cli.MultiCommand.execute(MultiCommand.java:95) at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:101) at org.elasticsearch.cli.Command.main(Command.java:54) at org.elasticsearch.launcher.CliToolLauncher.main(CliToolLauncher.java:65) Caused by: org.elasticsearch.common.ssl.SslConfigException: cannot read configured [PKCS12] keystore (as a truststore) [E:\elasticsearch-9.0.2\config\certs\elastic-certificates.p12] - this is usually caused by an incorrect password; (a keystore password was provided) at org.elasticsearch.common.ssl.SslFileUtil.ioException(SslFileUtil.java:58) at org.elasticsearch.common.ssl.StoreTrustConfig.readKeyStore(StoreTrustConfig.java:98) at org.elasticsearch.common.ssl.StoreTrustConfig.createTrustManager(StoreTrustConfig.java:82) at org.elasticsearch.xpack.core.ssl.SSLService.createSslContext(SSLService.java:479) at java.base/java.util.HashMap.computeIfAbsent(HashMap.java:1229) at org.elasticsearch.xpack.core.ssl.SSLService.lambda$loadSslConfigurations$11(SSLService.java:620) ... 15 more Caused by: java.io.IOException: keystore password was incorrect at java.base/sun.security.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:2109) at java.base/sun.security.util.KeyStoreDelegator.engineLoad(KeyStoreDelegator.java:226) at java.base/java.security.KeyStore.load(KeyStore.java:1497) at org.elasticsearch.common.ssl.KeyStoreUtil.readKeyStore(KeyStoreUtil.java:73) at org.elasticsearch.common.ssl.StoreTrustConfig.readKeyStore(StoreTrustConfig.java:94) ... 19 more Caused by: java.security.UnrecoverableKeyException: failed to decrypt safe contents entry: javax.crypto.BadPaddingException: Given final block not properly padded. Such issues can arise if a bad key is used during decryption. ... 24 more
最新发布
06-17
<think>我们正在处理Elasticsearch设置密码时出现的SSL配置错误,特别是PKCS12密钥库密码不正确的问题。用户提到运行elasticsearch-setup-passwords.batinteractive时出现错误,可能与PKCS12密钥库的密码不正确有关。根据引用[1]中的情况,虽然具体错误不同,但都是关于设置密码的失败。引用[1]的解决办法是重置密码,但我们现在的问题更具体地指向SSL配置和密钥库密码。可能的原因:1.在配置SSL时,我们为PKCS12密钥库设置了密码,但在运行设置密码工具时没有提供正确的密码。2.密钥库文件可能被修改或损坏。3.配置文件中指定的密钥库路径或密码可能不正确。解决步骤:1.确认我们在运行设置密码工具时使用了正确的密钥库密码。这个密码是在生成PKCS12密钥库时设置的。2.检查Elasticsearch配置文件(elasticsearch.yml)中的相关设置,特别是:-xpack.security.transport.ssl.keystore.path-xpack.security.transport.ssl.keystore.password-xpack.security.transport.ssl.truststore.path-xpack.security.transport.ssl.truststore.password注意:如果密码在配置文件中以明文形式存储,那么设置密码工具应该能够读取它。但是,出于安全考虑,建议使用Elasticsearch的密钥库工具(bin/elasticsearch-keystore)来存储密码。3.如果我们使用elasticsearch-keystore存储了密码,请确保密码已经正确添加。可以通过以下命令检查:```bin/elasticsearch-keystorelist```应该包含类似以下条目:xpack.security.transport.ssl.keystore.secure_passwordxpack.security.transport.ssl.truststore.secure_password4.如果我们没有使用密钥库存储密码,而是直接在配置文件中写入了密码,请确保密码正确且没有特殊字符导致解析问题。5.如果忘记了密钥库密码,可能需要重新生成密钥库。但注意,重新生成密钥库会导致现有的SSL证书无效,需要重新配置。6.在运行设置密码工具时,我们可以通过以下方式提供密码:-交互式输入:当工具提示时输入密码。-或者,我们可以使用自动模式,通过环境变量或命令行参数提供密码(具体查看工具帮助)。7.如果问题仍然存在,可以尝试重置'elastic'用户的密码,但需要先确保SSL配置正确。具体操作:步骤1:验证密钥库密码我们可以尝试使用keytool工具验证密钥库密码(如果密钥库是PKCS12格式):```keytool-list-v-keystore/path/to/elastic-certificates.p12-storetypepkcs12```输入密码,如果密码正确,将显示证书信息。步骤2:更新Elasticsearch密钥库中的密码如果步骤1中确认密码正确,但Elasticsearch仍然报错,可能是因为配置的密码(无论是明文配置还是密钥库存储)不正确。我们需要更新Elasticsearch的密钥库中的密码:a.使用elasticsearch-keystore工具添加密码(如果之前没有添加):```bin/elasticsearch-keystoreaddxpack.security.transport.ssl.keystore.secure_password```然后输入密码(和PKCS12密钥库的密码相同)。b.同样,添加信任库密码(如果配置了信任库):```bin/elasticsearch-keystoreaddxpack.security.transport.ssl.truststore.secure_password```步骤3:重新启动Elasticsearch在更新了密钥库中的密码后,重新启动Elasticsearch以使配置生效。步骤4:再次运行设置密码工具```bin/elasticsearch-setup-passwordsinteractive```如果问题依旧,我们可以尝试使用自动模式来设置密码,避免交互式输入可能带来的问题。另外,注意错误信息中提到的“可能原因”:-'elastic'用户的密码已经被更改过:如果我们之前设置过密码,那么再次运行设置密码工具会失败,需要先重置密码。-节点运行在不同的密钥库上:检查配置的密钥库路径是否正确。如果我们确定密钥库密码正确,但工具仍然报错,可能需要检查Elasticsearch日志以获取更详细的错误信息。关于重置'elastic'用户的密码(如果我们之前设置过,但现在忘记了):-停止Elasticsearch-elasticsearch.yml中临时添加:`xpack.security.authc.accept_default_password:true`-启动Elasticsearch-使用curl命令重置密码:curl-XPOST-uelastichttp://localhost:9200/_security/user/elastic/_password-H"Content-Type:application/json"-d'{"password":"new_password"}'-然后关闭临时设置,重启Elasticsearch。但是,我们当前的问题是在设置初始密码时出现的,所以这个步骤可能不适用。重点:我们的问题是在设置密码时SSL验证失败,所以核心还是解决SSL配置和密钥库密码的问题。因此,总结步骤:1.确认PKCS12密钥库的密码(使用keytool验证)。2.确保Elasticsearch配置中(或通过密钥库)正确设置了该密码。3.重启Elasticsearch后再次尝试设置密码。如果上述步骤无法解决,请提供更详细的错误日志。</think>### Elasticsearch SSL PKCS12 密钥库密码错误解决方案 在 Elasticsearch 9.0.2 中运行 `elasticsearch-setup-passwords.bat interactive` 时遇到 PKCS12 密钥库密码错误,通常由以下原因引起: #### 核心问题分析 1. **密码不匹配** SSL 配置中使用的 PKCS12 密钥库密码与 Elasticsearch 启动时提供的密码不一致 2. **密钥库配置错误** `elasticsearch.yml` 中 `xpack.security.transport.ssl` 配置指向了错误的密钥库文件或密码 3. **密码未正确存储** 密码未通过 `elasticsearch-keystore` 工具安全存储,导致服务无法读取[^1] --- ### 解决步骤 #### 步骤 1:验证密钥库密码 ```bash # 使用 keytool 验证 PKCS12 文件密码 keytool -list -v \ -keystore /path/to/elastic-certificates.p12 \ -storetype pkcs12 ``` 输入密码后,若显示证书详情则密码正确;若报 `keystore password was incorrect` 则需重置密码。 #### 步骤 2:更新 Elasticsearch 密钥库密码 ```bash # 进入 ES 安装目录 bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password ``` 按提示输入**正确的 PKCS12 密码**(需与密钥库创建时一致) #### 步骤 3:检查关键配置(elasticsearch.yml) ```yaml xpack.security.transport.ssl: enabled: true verification_mode: certificate keystore.path: /path/to/elastic-certificates.p12 truststore.path: /path/to/elastic-certificates.p12 ``` #### 步骤 4:重置密码工具(强制模式) ```bash # 先停止 ES 服务 bin/elasticsearch-setup-passwords interactive \ --url "https://localhost:9200" \ -E xpack.security.http.ssl.keystore.password=your_password \ -E xpack.security.transport.ssl.keystore.password=your_password ``` #### 步骤 5:证书重建(终极方案) ```bash # 删除旧证书 rm config/certs/* # 生成新 PKCS12 密钥库 bin/elasticsearch-certutil cert --pem --out config/certs/certs.zip unzip config/certs/certs.zip -d config/certs openssl pkcs12 -export -in config/certs/instance/instance.crt \ -inkey config/certs/instance/instance.key \ -out config/certs/elastic-certificates.p12 \ -password pass:your_new_password ``` > **重要提示**:完成操作后需重启 Elasticsearch 节点使配置生效。 --- ### 预防措施 1. **统一密码管理** 使用 `elasticsearch-keystore` 存储所有 SSL 密码,避免硬编码 2. **密码复杂度** 确保 PKCS12 密码包含大小写字母、数字和特殊字符(如 `Sec@Pass!2023`) 3. **配置验证** 启动前执行 `bin/elasticsearch -d -E "xpack.security.transport.ssl.keystore.password=your_pass"` 测试配置 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值