Python Cherrypy DECRYPTION_FAILED_OR_BAD_RECORD_MAC

Добрый день, у меня есть приложение, которое использует Cherrypy для сервера простого веб-сайта. Время от времени я получаю DECRYPTION_FAILED_OR_BAD_RECORD_MACошибка. Я никогда не видел проблемы во время тестирования, это очевидно только в журналах.

      [26/Nov/2021:02:50:39] ENGINE Error in HTTPServer.serve
Traceback (most recent call last):
  File "/home/user/app/venv/lib/python3.8/site-packages/cheroot/server.py", line 1810, in serve
    self._connections.run(self.expiration_interval)
  File "/home/user/app/venv/lib/python3.8/site-packages/cheroot/connections.py", line 201, in run
    self._run(expiration_interval)
  File "/home/user/app/venv/lib/python3.8/site-packages/cheroot/connections.py", line 218, in _run
    new_conn = self._from_server_socket(self.server.socket)
  File "/home/user/app/venv/lib/python3.8/site-packages/cheroot/connections.py", line 272, in _from_server_socket
    s, ssl_env = self.server.ssl_adapter.wrap(s)
  File "/home/user/app/venv/lib/python3.8/site-packages/cheroot/ssl/builtin.py", line 277, in wrap
    s = self.context.wrap_socket(
  File "/usr/lib/python3.8/ssl.py", line 500, in wrap_socket
    return self.sslsocket_class._create(
  File "/usr/lib/python3.8/ssl.py", line 1040, in _create
    self.do_handshake()
  File "/usr/lib/python3.8/ssl.py", line 1309, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLError: [SSL: DECRYPTION_FAILED_OR_BAD_RECORD_MAC] decryption failed or bad record mac (_ssl.c:1131)

Есть ли простой способ для Cherrypy регистрировать это как ошибку одной строки в журналах или есть способ исправить это?

1 ответ

Я столкнулся с тем же (а также с SSLV3_ALERT_BAD_CERTIFICATE). Моя установка: CherryPy 18.5.0; Питон 3.7

Я использую самозаверяющий сертификат (я думаю, что это ключевая информация для проблемы)

Из-за недоверенного сертификата браузеры указывают, что это не защищенное должным образом соединение. Пользователям необходимо нажать «Подтвердить», что они все еще хотят просматривать страницы. Попытки доступа из Edge или Chrome не вызывают эту ошибку CherryPy. Кажется, что Firefox отправляет что-то на сервер еще до того, как убедится, что запрос должен быть выполнен (т.е. даже до подтверждения).

ИМХО, CherryPy должен обрабатывать ошибки SSL (отлавливать исключения) и позволять пользователям обрабатывать их.

Поскольку я не могу контролировать выбор браузера пользователей и не могу поймать исключение SSL, мое «решение» состояло в том, чтобы заставить пользователей установить самозаверяющий сертификат. С этого момента они могут просматривать страницы без предупреждения, и в журналах больше не появляется такая ошибка CherryPy.

Я знаю, что это довольно слабое решение, но никто не ответил, поэтому я решил поделиться этим, так как это может кому-то помочь.

Другие вопросы по тегам