Всем привет!
С приходом новых версий продуктов 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 по данной проблеме:
- Ограничения на экспорт лицензий для шифрования SAS/SECURE. Пакет доступен для большинства пользователей внутри и за пределами США. Тем не менее, некоторые страны (Россия, Китай, Франция и тд) имеют ограничения на ПО, которое содержит шифрование. США также запрещают экспорт программных продуктов для стран под санкциями.
- Использование PROC HTTP требует наличия библиотеки tkessl, без которой этот функционал не работает. Дело в том, что HTTPS протокол подразумевает использование SSL сертификатов, что требует наличия криптографических компонентов в составе SAS Foundation, а из поставки для РФ они исключены (см. пункт 1).
- В SAS 9.3 библиотека называлась tkessl.dll для Windows систем и tkessl.so для Unix систем. Ранее, данная библиотека присутствовала в SAS несмотря на то, что криптографические возможности в ПО отсутствовали. К сожалению, данная библиотека исключается из SAS 9.4 при поставке в РФ. В SAS 9.4 данная библиотека поставляется только вместе с компонентами криптографии и не может быть добавлена отдельно.
Таким образом, для решения данной проблемы нам потребуется использовать промежуточный слой между SAS и HTTPS. Это может быть написанная скрипт\программа на разных языках таким как Python, JVS, Java и тд.
Я предложу самое лёгкое решение – использовать бесплатную программу CURL.
По факту, программа делает тоже, что и PROC HTTPS:
- Указываем URL назначения
- Указываем файл с параметрами
- Получаем выходной файл
Главное, правильно указать параметры и, возможно, установить сертификат SSL, который доступен по HTTPS через браузер. Последнее может потребоваться сделать через администратора системы.
Итак:
- Скачиваем и устанавливаем CURL (ссылка или ссылка)
- Устанавливаем Visual C++ Redistributable (ссылка)
- Указываем путь к curl в переменных окружения (path)
- Запускаем программу с необходимыми параметрами (ссылка)
В моём случае параметры и запуск из SAS выглядел следующим образом:
%sysexec(curl https://xxxxxxxxxx.ru/api/&url —data-binary «@in» -o out);
На Windows и UNIX системах настраивается всё идентично.
Пользуйтесь и успехов с SAS!
Спасибо в комментариях даёт плюс в карму =)
Сергей, наткнулись на подобную проблему при активации ACM -etl процессов и сбора новых метик типа HTTP CHECKS в SAS VA. у нас версия 9.4 и также отсутствует возможность использовать эту библиотеку и из депота она также вырезана и невозможно установить.
Я так понял ваша рекомендация нам не поможет т.к активируется сасовский функционал.
Обещают в SAS 9.4M4 вернуть tkessl. SAS/SECURE при этом останется недоступным для России и ряда других стран.