Подключаюсь к своему ElasticSearch который опубликован с сертификатом LetsEncrypt, таким образом:
from elasticsearch import Elasticsearch
#import urllib3
#urllib3.disable_warnings()
es = Elasticsearch(
host='elastic.********.ru',
http_auth=('******', '*********'),
use_ssl=True,
#verify_certs=False,
port=9200,
)
Понятно что если задействовать "verify_certs=False," - то всё ок - он подключится, но если нет, он считает что сертификат самоподписанный, ошибка:
C:/Users/Aleksey/AppData/Local/Programs/Python/Python38/python.exe d:/Personal/MyDocuments/_Python/Projects/Aihr/AIHR_PrepareRecommendation.py
Traceback (most recent call last):
File "C:\Users\Aleksey\AppData\Local\Programs\Python\Python38\lib\site-packages\urllib3\connectionpool.py", line 670, in urlopen
httplib_response = self._make_request(
File "C:\Users\Aleksey\AppData\Local\Programs\Python\Python38\lib\site-packages\urllib3\connectionpool.py", line 381, in _make_request
self._validate_conn(conn)
File "C:\Users\Aleksey\AppData\Local\Programs\Python\Python38\lib\site-packages\urllib3\connectionpool.py", line 978, in _validate_conn
conn.connect()
File "C:\Users\Aleksey\AppData\Local\Programs\Python\Python38\lib\site-packages\urllib3\connection.py", line 362, in connect
self.sock = ssl_wrap_socket(
File "C:\Users\Aleksey\AppData\Local\Programs\Python\Python38\lib\site-packages\urllib3\util\ssl_.py", line 384, in ssl_wrap_socket
return context.wrap_socket(sock, server_hostname=server_hostname)
File "C:\Users\Aleksey\AppData\Local\Programs\Python\Python38\lib\ssl.py", line 500, in wrap_socket
return self.sslsocket_class._create(
File "C:\Users\Aleksey\AppData\Local\Programs\Python\Python38\lib\ssl.py", line 1040, in _create
self.do_handshake()
File "C:\Users\Aleksey\AppData\Local\Programs\Python\Python38\lib\ssl.py", line 1309, in do_handshake
self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1123)
Внимание вопрос, где python3 хранит свой trusted root лист - поведение при подключении к эндпоинту одинаковое как под windows python так и на python под ubuntu 18.04. Проверял при помощи openssl - сертификат доверенный и правильный, в браузере тоже всё ок.
Где что подправить что б python доверял сертифам выпущенным letsencrypt?