java-crypto-workaround/

На этих выходных я решил, что что-то больно давно не ставил апдейтов. Ну и решил поставить. Помимо прочего apt-get закачал новую версию JVM. Что интересно, непосредственная установка происходит где-то в недрах пакета oracle-java8-installer, в postinst или вроде того. Поэтому apt-get неправильно определяет объем трафика, необходимый для скачивания апдейтов. Однако поведать я хотел не об этом.

Вроде все прошло гладко. Браузер работает, Skype запускается — на этот раз обошлось без инцидентов. Но в понедельник, придя на работу, я обнаружил, что проект перестал собираться. Кто-то накоммитил без запуска тестов? Я, наверное, минут двадцать курил стектрейсы, пока не понял, в чем же дело.

А дело оказалось в том, что когда-то я потчил установленную JVM, но уже забыл об этом. Кому может прийти в голову патчить JVM? Не смотрите на меня — это у Oracle такие приходы. Вы наверняка слушали об ограничениях на экспорт криптографического ПО в США. Я не особо знаком с деталями этих ограничений, но суть в том, что под JVM вы не можете так просто взять и использовать AES с длиной ключа 256 бит. Использовать 128 бит можно, а 256 — нельзя. Чтобы стало можно, требуется сходить по ссылке , найти там что-то типа «Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files for JDK/JRE» для вашей версии JVM, скачать и распаковать пакет, а затем пропатчить свою JVM:

export TOPATH = / usr / lib / jvm / java- 8 -oracle / jre / lib / security
sudo cp $TOPATH / local_policy.jar $TOPATH / local_policy.jar.bak
sudo cp $TOPATH / US_export_policy.jar $TOPATH / US_export_policy.jar.bak
sudo cp local_policy.jar $TOPATH / local_policy.jar
sudo cp US_export_policy.jar $TOPATH / US_export_policy.jar

Ну и, конечно же, после очередного обновления все снова сломается.

Можно ли как-то решить эту проблему раз и навсегда? Можно запретить обновлять JVM, но тогда вы останетесь без багфиксов . Можно использовать в своем проекте длины ключей, доступные по умолчанию. Но это (1) менее секьюрно , а также (2) не поможет решить проблемы со сторонними приложениями.

Как по мне, вместо того, чтобы усложнять язык лямбдами и прочей ерундой, лучше бы Oracle сосредоточился на оптимизации ВМ, исправлении багов и решении давно известных проблем вроде этой. Почему я могу спокойно патчить JVM, забив на законы какой-то там далекой страны, но при этом не могу сразу устанавливать пропатченную версию ВМ? Да, и уметь отображать иконки в трее в третьем-то тысячелетии было бы здорово.

А сталкивались ли вы с описанной проблемой и если да, то как ее решали?

admin

Share
Published by
admin

Recent Posts

Лучшие дистрибутивы Linux

Если говорить о том, какие лучшие дистрибутивы Linux мы знаем, то этот список может быть…

2 недели ago

Лучшие браузеры для Ubuntu

Хотя Ubuntu и поставляется со встроенным обозревателем Firefox многие пользователи считают что это не самая…

2 недели ago

Установка Remmina Ubuntu 16.04 или 16.10

Что такое Remmina? Remmina — это совершенно бесплатный и свободный клиент так называемого удаленного рабочего…

2 недели ago

Плюсы Ubuntu

Как мы знаем, Ubuntu это самая популярная сборка из систем на базе ядра Linux. У…

2 недели ago

Выбираем ноутбук для Linux

Выбор ноутбука для каждого пользователя это довольно кропотливый процесс. Люди стараются подобрать ноутбук который будет…

2 недели ago

Установка Linux рядом с Windows 10

Если вы решили ознакомиться с операционной системой Linux более детально и задались вопросом как установить…

2 недели ago