Arhn - архитектура программирования

urllib2 SSL3_CHECK_CERT_AND_ALGORITHM: слишком маленький ключ dh

Пытаясь отправить запрос SOAP с помощью suds, я использую Python 2.7.6.

Я не очень разбираюсь в безопасности. Меня заставили поверить, что либо ключ безопасности на моей машине, либо на машине сервера слишком мал, я не знаю, как это решить. Могу ли я сгенерировать новый ключ и создать собственный открыватель? Любая помощь / руководство будет полезно.

Трассировки стека:

Traceback (most recent call last):
  File "read_xml.py", line 71, in <module>
    client.service.PO(purchase_orders)
  File "/usr/local/lib/python2.7/dist-packages/suds/client.py", line 542, in __call__
    return client.invoke(args, kwargs)
  File "/usr/local/lib/python2.7/dist-packages/suds/client.py", line 602, in invoke
    result = self.send(soapenv)
  File "/usr/local/lib/python2.7/dist-packages/suds/client.py", line 637, in send
    reply = transport.send(request)
  File "/usr/local/lib/python2.7/dist-packages/suds/transport/https.py", line 64, in send
    return  HttpTransport.send(self, request)
  File "/usr/local/lib/python2.7/dist-packages/suds/transport/http.py", line 77, in send
    fp = self.u2open(u2request)
  File "/usr/local/lib/python2.7/dist-packages/suds/transport/http.py", line 118, in u2open
    return url.open(u2request, timeout=tm)
  File "/usr/lib/python2.7/urllib2.py", line 404, in open
    response = self._open(req, data)
  File "/usr/lib/python2.7/urllib2.py", line 422, in _open
    '_open', req)
  File "/usr/lib/python2.7/urllib2.py", line 382, in _call_chain
    result = func(*args)
  File "/usr/lib/python2.7/urllib2.py", line 1222, in https_open
    return self.do_open(httplib.HTTPSConnection, req)
  File "/usr/lib/python2.7/urllib2.py", line 1184, in do_open
    raise URLError(err)
urllib2.URLError: <urlopen error [Errno 1] _ssl.c:510: error:14082174:SSL routines:SSL3_CHECK_CERT_AND_ALGORITHM:dh key too small>

Я просматривал следующие ссылки

Python - request.exceptions.SSLError - ключ dh слишком мал

https://bugs.python.org/issue24985

https://unix.stackexchange.com/questions/333877/how-to-find-what-key-exactly-dh-key-too-small-openssl-error-is-about

Не знаете, как реализовать то, о чем они говорят, еще раз спасибо за любую помощь


  • Вы должны либо настроить свое соединение, чтобы не использовать Диффи-Хелмана (DH), либо изменить что-то на сервере, следуя инструкциям на странице weakdh. .org/sysadmin.html. Если вы управляете сервером, лучше исправить его безопасность и, следовательно, изменить его dhparams, как описано в предыдущей ссылке. Если вы не управляете сервером, вы должны использовать первый вариант. 21.09.2018

Ответы:


1

Я решил это, изменив DEFAULT@SECLEVEL=2 -> DEFAULT@SECLEVEL=1 в /etc/ssl/openssl.cnf

19.11.2020
  • Это решило мою проблему. Благодарю вас! 02.01.2021

  • 2

    Я использую этот фрагмент кода в Python 3.7:

    import ssl
    from urllib.request import HTTPSHandler
    
    from suds.transport.https import HttpAuthenticated
    
    
    class SSLAuthenticated(HttpAuthenticated):
        """ Enables SSL context for Suds. """
    
        def __init__(self, ssl_ciphers: str = ssl._DEFAULT_CIPHERS, **kwargs):
            self.ssl_ciphers = ssl_ciphers
            super().__init__(**kwargs)
    
        def u2handlers(self):
            handlers = super().u2handlers()
            ssl_context = ssl.create_default_context()
            if self.ssl_ciphers is not None:
                ssl_context.set_ciphers(self.ssl_ciphers)
            ssl_context_handler = HTTPSHandler(context=ssl_context)
            handlers = [ssl_context_handler] + handlers
            return handlers
    
    client = suds.Client(transport=SSLAuthenticated(ssl_ciphers='HIGH:!DH'))
    

    Чтобы получить список доступных шифров на веб-сайте, запустите:

    nmap --script ssl-enum-ciphers -p 443 affected.website.com
    

    выберите один за другим шифры класса A и проверьте их следующим образом:

    openssl s_client -connect affected.website.com:443 -cipher 'HIGH:!DH' -brief
    
    29.01.2020
    Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..