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

Apple: история логотипа

Как менялся логотип Apple на протяжении многих лет. Логотип Apple — это не просто символ,…

6 дней ago

Security Boot Fail при загрузке Acer — решение проблемы

Security Boot Fail при загрузке Acer — решение проблемы При загрузке ноутбука Acer с флешки,…

3 недели ago

Ноутбук не включается — варианты решения

Ноутбук не включается — варианты решения Если при попытке включить ноутбук вы обнаруживаете, что он…

3 недели ago

The AC power adapter wattage and type cannot be determined — причины и решение

The AC power adapter wattage and type cannot be determined — причины и решение При…

3 недели ago

Свистит или звенит блок питания компьютера — причины и решения

Свистит или звенит блок питания компьютера — причины и решения Некоторые владельцы ПК могут обратить…

3 недели ago

Мигает Caps Lock на ноутбуке HP — почему и что делать?

Мигает Caps Lock на ноутбуке HP — почему и что делать? При включении ноутбука HP…

3 недели ago