• 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': {},
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    于是就写申请要一个生产的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': {},
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    因为是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'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    毫无意外,又踩了一下,死活找不到路径。。。
    运维说最好忽略证书,那就放弃吧,继续面向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': {},
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
  • 相关阅读:
    2、宽带Doherty放大器ADS仿真(带版图)
    分布式之计算高性能
    6.DesignForPlacement\ExportHighlightedList
    css总结
    【IEEE出版顺利申请中】2024年第四届电子信息工程与计算机科学国际会议(EIECS 2024)
    ue影片渲染队列渲染出来的png序列有些带有光斑和黑斑
    什么是Nginx?Nginx基础教学详解。Linux如何安装Nginx
    【GIT版本控制】--安装GIT
    40岁就该下岗?IBM涉嫌年龄歧视,称其老员工为“恐龙”并计划辞退,员工竟无法反驳
    编译CentOS6.10系统的OpenSSHV9.4rpm安装包
  • 原文地址:https://blog.csdn.net/qq_37049781/article/details/126546352