API Perl для ServiceNow перестал поддерживать TLS 1.0 и 1.1. Есть ли быстрые Perl 5.8 исправления? - PullRequest
1 голос
/ 14 января 2020

Я perl разработчик и работаю над ServiceNow API для создания заявок на изменение. Он работал хорошо до прошлой пятницы, когда ServiceNow отказался от поддержки TLS 1.0 и 1.1. Моя версия Perl 5.8, поэтому она довольно старая. Есть ли быстрые Perl 5.8 исправления? Вот модули perl, которые я использую.

use MIME::Base64;
use HTTP::Proxy;
use JSON;
use REST::Client;

новые ошибки;

Ответ: 500 Ошибка согласования SSL:

Статус ответа: 500 Заголовок: Content-Type = text / plain Заголовок: Client-Date = Пт, 10 января 2020 23:06:10 GMT Заголовок: Client-Warning = Внутренний ответ 500 Ошибка согласования SSL:

Ответы [ 2 ]

2 голосов
/ 15 января 2020

Perl 5.8.0 относится к июлю 2002 года. Perl 5.8.8 (что, как я подозреваю, вы на самом деле используете) относится к январю 2006 года. Обе эти версии являются древними, и я настоятельно рекомендую их не использовать.

Я понимаю, что вы используете конкретную c версию операционной системы (я бы предположил RHEL5) и что обновление вашей ОС - это проект, который ваша компания не собирается предпринимать. Но именно поэтому мы не используем системную версию Perl.

У вас есть несколько вариантов.

  • Установите другую версию Perl рядом с системой Perl. Поместите это в /opt/perl или где-то в этом роде. Сделайте его последней версией и установите для него совершенно новую библиотеку модулей. perlbrew - хороший способ для этого.
  • Используйте виртуальную машину или, что лучше, контейнер Docker для размещения вашего API. Это может быть более новая ОС, использующая более новую версию Perl с более новой версией системных библиотек (которая вам, вероятно, понадобится - поскольку ваша более старая версия openssl, вероятно, не поддерживает TLS 1.2).
  • Прекратите использовать устаревшее аппаратное обеспечение для размещения вашего проекта и переместите его в облачный провайдер, например AWS.

Вы должны быть более agile об обновлении вашей ОС (что очень немногие компании очень хороши в этом) или вам нужно отделить среду выполнения вашего приложения от базовой ОС. Этот второй маршрут - то, чем занимаются включенные проекты уже несколько лет.

2 голосов
/ 14 января 2020

Если у вас есть что сказать по этому поводу, вы должны действительно, действительно, действительно, действительно, действительно обновить ваш Perl. Я имею в виду, действительно. 5.8 древнее.

Если вы не можете этого сделать, вы должны хотя бы обновить фрагмент кода, который обрабатывает TLS, до версии> = 1.2 (Удачи!). Rest::Client использует LWP::UserAgent, который, в свою очередь, использует Net::SSL или IO::Socket::SSL (я думаю) для вещей SSL. Если присутствуют оба, будет использоваться Net::SSL.

Таким образом, вы должны выяснить, какие из них есть, и обновить один из них. Net::SSL, вероятно, ваш лучший выбор, поскольку это просто оболочка для библиотеки c openssl (apt!). У другого, вероятно, есть крысиный хвост зависимостей, но я не смотрел.

...