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

Консоль удаленного рабочего стола(rdp console)

Клиент удаленного рабочего стола (rdp) предоставляет нам возможность войти на сервер терминалов через консоль. Что…

1 месяц ago

Настройка сети в VMware Workstation

В VMware Workstation есть несколько способов настройки сети гостевой машины: 1) Bridged networking 2) Network…

1 месяц ago

Логи брандмауэра Windows

Встроенный брандмауэр Windows может не только остановить нежелательный трафик на вашем пороге, но и может…

1 месяц ago

Правильный способ отключения IPv6

Вопреки распространенному мнению, отключить IPv6 в Windows Vista и Server 2008 это не просто снять…

1 месяц ago

Ключи реестра Windows, отвечающие за параметры экранной заставки

Параметры экранной заставки для текущего пользователя можно править из системного реестра, для чего: Запустите редактор…

1 месяц ago

Как управлять журналами событий из командной строки

В этой статье расскажу про возможность просмотра журналов событий из командной строки. Эти возможности можно…

1 месяц ago