java + ГОСТ =
Jan. 20th, 2018 09:55 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Примерно раз в год я пытаюсь что-нибудь написать на Java. В этом году этот раз уже случился. Пишу я на ней, согласно старой шутке, как на Fortran-е. Ну то есть как на C с классами. Поскольку нужен в общем-то proof-of-concept.
Ну, в Debian stable ставить eclipse штатно я так и не научился, пришлось брать с сайта. Иначе идёт что-то древнее и не тащит с собой maven.
Вскрытие показало, что ГОСТа в TLS в открытых реализациях нет. В BouncyCastle вообще, в wildfly-openssl он не принимает ГОСТ-овые CipherSuites, у КриптоПро нет свободной беты, бета от VipNet-а не совместима с КриптоПро-шным сервером и валидирует в зависимости от порядка сертификатов в файле с доверенными сертификатами. Ну и диагностика так себе — мне проще оказалось Wireshark-ом посмотреть, где же обламываюсь, хотя это может быть про меня, а не про VipNet.
wildfly, наверное, можно докрутить, но для этого надо знать Java. Плюс я попытался заставить её использовать конфиг openssl для подгрузки ГОСТового engine и выяснил, что setenv в Java нет в принципе, но можно сделать хаком. Хак не помог в силу вышеупомянутого отсутствия поддержки.
Вообще язык похож на сделанный очень грамотно, хотя учиться ему надо. Какая-нибудь сборка-разборка XML идёт на ура, и прочая сборка из кубиков тоже. IDE дружелюбная. Даже слишком.
Надо что-то более прикольное для себя написать.
Ну, в Debian stable ставить eclipse штатно я так и не научился, пришлось брать с сайта. Иначе идёт что-то древнее и не тащит с собой maven.
Вскрытие показало, что ГОСТа в TLS в открытых реализациях нет. В BouncyCastle вообще, в wildfly-openssl он не принимает ГОСТ-овые CipherSuites, у КриптоПро нет свободной беты, бета от VipNet-а не совместима с КриптоПро-шным сервером и валидирует в зависимости от порядка сертификатов в файле с доверенными сертификатами. Ну и диагностика так себе — мне проще оказалось Wireshark-ом посмотреть, где же обламываюсь, хотя это может быть про меня, а не про VipNet.
wildfly, наверное, можно докрутить, но для этого надо знать Java. Плюс я попытался заставить её использовать конфиг openssl для подгрузки ГОСТового engine и выяснил, что setenv в Java нет в принципе, но можно сделать хаком. Хак не помог в силу вышеупомянутого отсутствия поддержки.
Вообще язык похож на сделанный очень грамотно, хотя учиться ему надо. Какая-нибудь сборка-разборка XML идёт на ура, и прочая сборка из кубиков тоже. IDE дружелюбная. Даже слишком.
Надо что-то более прикольное для себя написать.
no subject
Date: 2018-01-20 07:16 pm (UTC)С секьюрити библиотеками там... ну типа швах. Все или за деньги, или не работает, или и то и то.
setenv можно, конечно, надо просто знать, куда и как.
Да можно сразу на скале ж валять; там меньше камлания.
no subject
Date: 2018-01-20 07:21 pm (UTC)no subject
Date: 2018-01-20 07:21 pm (UTC)no subject
Date: 2018-01-20 07:23 pm (UTC)no subject
Date: 2018-01-20 07:28 pm (UTC)no subject
Date: 2018-01-20 07:44 pm (UTC)Мы вызываем какой-нибудь процесс, и передаем ему список environment variables: https://docs.oracle.com/javase/tutorial/essential/environment/env.html
А что надо-то?
no subject
Date: 2018-01-20 07:55 pm (UTC)Собственно, ГОСТовый TLS в openssl поддерживается только через engine — подгружаемые библиотеки. Чтобы их подгрузить, нужно прописывать конфиг. Можно глобальный, но лучше не надо. Если он не глобальный, то надо бы позвать функцию OpenSSL_config, которое имя конфига или параметром принимает, или из environment берёт. Вот я и пытался перед загрузкой wildfly передать через окружение путь к конфигу. wildfly не работает, похоже, на другом уровне, там надо как-то его допиливать, чтобы ГОСТовые ciphersuites вообще воспринимались.
Вот как-то так.