SAS HTTPS в России

encryptionВсем привет!

С приходом новых версий продуктов SAS, приходят и новые проблемы. В статье я опишу проблему, с которой разработчики SAS в ряде стран сталкиваются при работе с протокол HTTPS с помощью PROC HTTP.

ERROR: Could not find extension: (tkessl)

ERROR: An SSL cipher handle could not be created.

ERROR: TK extension TKEAM could not be loaded. Most likely secure communications are not available on this system.

ERROR: Unable to establish an SSL connection.

Вы столкнулись с этой ошибкой? Одно из решений в данной статье!

Стандартная процедура PROC HTTP позволяет работать с сервисами через глобальную паутину. Например, забирать данные по предоставленному API даже через протоколы с шифрованием, такие как HTTPS. Запустив процедуру в SAS 9.3, всё отработает как часы, но вот в 9.4 вы можете столкнуться со следующим:

proc http

in=in     out=out     url=’https://xxxxxxxxxx.ru/api/’    method=’post’    ct=’application/x-www-form-urlencoded’;

run;

ERROR: Could not find extension: (tkessl)

ERROR: An SSL cipher handle could not be created.

ERROR: TK extension TKEAM could not be loaded. Most likely secure communications are not available on this system.

ERROR: Unable to establish an SSL connection.

Это связано с рядом факторов, которые в сумме дают то, что имеем. Ниже ответ коллег из компании SAS по данной проблеме:

  1. Ограничения на экспорт лицензий для шифрования SAS/SECURE. Пакет доступен для большинства пользователей внутри и за пределами США. Тем не менее, некоторые страны (Россия, Китай, Франция и тд) имеют ограничения на ПО, которое содержит шифрование. США также запрещают экспорт программных продуктов для стран под санкциями.
  2. Использование PROC HTTP требует наличия библиотеки tkessl, без которой этот функционал не работает. Дело в том, что HTTPS протокол подразумевает использование SSL сертификатов, что требует наличия криптографических компонентов в составе SAS Foundation, а из поставки для РФ они исключены (см. пункт 1).
  3. В SAS 9.3 библиотека называлась tkessl.dll для Windows систем и tkessl.so для Unix систем. Ранее, данная библиотека присутствовала в SAS несмотря на то, что криптографические возможности в ПО отсутствовали. К сожалению, данная библиотека исключается из SAS 9.4 при поставке в РФ. В SAS 9.4 данная библиотека поставляется только вместе с компонентами криптографии и не может быть добавлена отдельно.

Таким образом, для решения данной проблемы нам потребуется использовать промежуточный слой между SAS и HTTPS. Это может быть написанная скрипт\программа на разных языках таким как Python, JVS, Java и тд.

Я предложу самое лёгкое решение – использовать бесплатную программу CURL.

По факту, программа делает тоже, что и PROC HTTPS:

  1. Указываем URL назначения
  2. Указываем файл с параметрами
  3. Получаем выходной файл

Главное, правильно указать параметры и, возможно, установить сертификат SSL, который доступен по HTTPS через браузер. Последнее может потребоваться сделать через администратора системы.

Итак:

  1. Скачиваем и устанавливаем CURL (ссылка или ссылка)
  2. Устанавливаем Visual C++ Redistributable (ссылка)
  3. Указываем путь к curl в переменных окружения (path)
  4. Запускаем программу с необходимыми параметрами (ссылка)

В моём случае параметры и запуск из SAS выглядел следующим образом:

%sysexec(curl https://xxxxxxxxxx.ru/api/&url —data-binary «@in» -o out);

На Windows и UNIX системах настраивается всё идентично.

Пользуйтесь и успехов с SAS!

Спасибо в комментариях даёт плюс в карму =)

SAS HTTPS в России: 2 комментария

  1. Сергей, наткнулись на подобную проблему при активации ACM -etl процессов и сбора новых метик типа HTTP CHECKS в SAS VA. у нас версия 9.4 и также отсутствует возможность использовать эту библиотеку и из депота она также вырезана и невозможно установить.
    Я так понял ваша рекомендация нам не поможет т.к активируется сасовский функционал.

  2. Обещают в SAS 9.4M4 вернуть tkessl. SAS/SECURE при этом останется недоступным для России и ряда других стран.

Добавить комментарий

Войти с помощью: 

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.