IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> Wagtail SearchBackend —— ElasticSearch7 https 连接问题 -> 正文阅读

[网络协议]Wagtail SearchBackend —— ElasticSearch7 https 连接问题

SearchBackend 是 Wagtail 后台提供搜索的服务后端,支持Database ElasticSearch等。

最近进行框架升级 2.14 -> 3.0.1,升级后出现了一些问题,其中一个就是搜索功能无法正常使用了

经过调试查找Google等一堆操作后确定是一个bug(这句就是废话), 这个问题应该是从2.15版本产生的

Wagtail的主页下看看,最终发现很久之前就有人提过Issue了,瞬间痛哭流涕,他乡遇故知啊。issue中倒是也有提供了解决思路,但是感觉不太好,也并不能完全解决。

最终决定切换到Backend试一试,本地搭了个ElasticSearch,简单配置一下,功能正常使用。

WAGTAILSEARCH_BACKENDS = {
    'default': {
        'BACKEND': 'wagtail.search.backends.elasticsearch7',
        'URLS': ['http://localhost:9200'],
        'INDEX': 'wagtail_search',
        'TIMEOUT': 5,
        'OPTIONS': {},
        'INDEX_SETTINGS': {},
    }
}

于是就写申请要一个生产的elasticsearch服务,给了个地址配上去

WAGTAILSEARCH_BACKENDS = {
    'default': {
        'BACKEND': 'wagtail.search.backends.elasticsearch7',
        'URLS': ['https://user-name:pwd@10.xx.xx.104:9200'],
        'INDEX': 'wagtail_search',
        'TIMEOUT': 5,
        'OPTIONS': {
            'use_ssl': True,
            'verify_certs': False,
        },
        'INDEX_SETTINGS': {},
    }
}

因为是https嘛,所以就加了OPTIONS配置忽略证书,这点道理还是懂得。

不出意外的话这个时候就该出现意外了,
elasticsearch.exceptions.SSLError: ConnectionError([SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1129)) caused by: SSLError([SSL: CERTIFICATE_VERIFY_FAILED] certific ate verify failed: self signed certificate in certificate chain (_ssl.c:1129))
真是踩屎的感觉,都设置False了还检测证书,查会文档啥的感觉没错,然后又添加证书, 三选一

# provide a path to CA certs on disk
ca_certs='/path/to/CA_certs',
# PEM formatted SSL client certificate
client_cert='/path/to/clientcert.pem',
# PEM formatted SSL client key
client_key='/path/to/clientkey.pem'

毫无意外,又踩了一下,死活找不到路径。。。
运维说最好忽略证书,那就放弃吧,继续面向google开发

一顿搜索,试了几个不管用,也大致了解了为啥'verify_certs': False不生效, 好像是这个设置Flase,证书路径就是None,然后在某一步将None读取成了字符串

最后找了个能用的方法记录下来

import ssl
from elasticsearch.connection import create_ssl_context

ssl_context = create_ssl_context()
ssl_context.check_hostname = False
ssl_context.verify_mode = ssl.CERT_NONE

WAGTAILSEARCH_BACKENDS = {
    'default': {
        'BACKEND': 'wagtail.search.backends.elasticsearch7',
        'URLS': ['https://user-name:pwd@10.xx.xx.104:9200'],
        'INDEX': 'wagtail_search',
        'TIMEOUT': 5,
        'OPTIONS': {
            'ssl_context': ssl_context,
            'use_ssl': True,
            'verify_certs': False,
        },
        'INDEX_SETTINGS': {},
    }
}
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-09-04 01:45:01  更:2022-09-04 01:45:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 22:22:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码