后面做了优化,修改源码,建议采用优化后的方法

1、修改本地es连接配置(源码示例容易误导,看源码读取配置后才正确配置):
Yii2 elasticseach ssl认证配置及源码修改

2、修改protocol设置,yii2中es连接之前会获取所有的可连接es集群,因为es不存在protocol属性,源码中手动设置为http,这个地方作者考虑补全,没有采用本地配置的protocol,因此要修正:
Yii2 elasticseach ssl认证配置及源码修改

3、修改curl请求的证书认证,增加三个opt选项,CURLOPT_SSL_VERIFYPEER=true,设置为要验证证书,CURLOPT_SSL_VERIFYHOST=false,设置为不验证证书hostname是否一致,CURLOPT_CAINFO配置证书的路径:
Yii2 elasticseach ssl认证配置及源码修改

注意:在es中的官网中提及,如果返回空回应,则说明es的认证配置成功。如果取不到数据,那么就需要考虑其他问题了,比如第2步中修改protocol为https才能拿到数据。
Yii2 elasticseach ssl认证配置及源码修改

优化:

1、修改后的main-local.php配置。上面第2步中修改protocol设置,其实是自以为找到了源码作者疏忽的地方,其实更简便的办法是修改组件配置的defaultProtocol为https,就像下面配置中那样。
Yii2 elasticseach ssl认证配置及源码修改

2、当然,把protocol设置为https后,大家肯定是希望使用ssl加密访问了。那下面就以它为参考,在源码中增加ssl的扩展配置。

  • 新增一个组件配置sslExtension,并让他与其他配置一起生效
  • 修改配置项

Yii2 elasticseach ssl认证配置及源码修改
Yii2 elasticseach ssl认证配置及源码修改

3、测试通过,结果与未优化之前是一样的。

相关文章:

  • 2021-12-31
  • 2021-09-09
  • 2021-09-29
  • 2021-07-21
  • 2022-12-23
  • 2021-08-13
猜你喜欢
  • 2021-07-10
  • 2022-01-16
  • 2022-01-02
  • 2021-06-23
  • 2021-08-14
  • 2022-12-23
相关资源
相似解决方案