Я использую SSHJ-библиотеку в проекте. Библиотека SSHJ использовала криптографию bouncycastle.Как реализовать bouncycastle в одну банку?
В eclipse все хорошо, но после того, как я использую одну банку, чтобы упаковать все в одном банке, я столкнулся с проблемами с bouncycastle lib. Bcprov-jdk15on-1.51.jar включен в пакет JAR в/lib, где находятся все остальные библиотеки, а также, например. sshj.jar.
В журнале у меня есть это:
Средний класс безопасности 'org.bouncycastle.jce.provider.BouncyCastleProvider' не найден
и это
ВНИМАНИЕ: Отключение высокопрочные шифры: сила шифрования, по-видимому, ограничена политикой JCE
И с функциональностью соединение SFTP в результате в:
net.schmizz.sshj.transport.TransportException: Невозможно достичь урегулирования: [Диффи-Хеллмана-group1-sha1, Диффи Hellman-группа обменных sha1] и [Дифй-Хеллман-группа обменного sha256]
То, что я пробовал:
- Устанавливается Java JCE в/lib/security
- Не знаете, почему вышеприведенное сообщение все еще всплывает об отключенных высокоуровневых шифрах?
- Пробный «Security.addProvider (новый BouncyCastleProvider());» в коде
Это как вся работа "как и ожидалось":
- Поставив "bcprov-jdk15on-1.51.jar", чтобы JAVA_HOME \ Lib \ вн \
- к сожалению это вариант LAST для меня. У меня будет огромная головная боль для поддержки библиотек в ситуациях обновления версии Java.
Таким образом, очевидно, есть некоторые проблемы с путем к классам ОК libary? Где-то я кое-что прочитал о подписанной библиотеке поставщика безопасности, имеющей проблемы с реализацией, не совсем понял, что один ... Может быть, это и причина здесь?
Любые идеи по решению этой проблемы? Любая помощь по этому вопросу ценится, спасибо!
EDIT: Моя сборка.XML с предложенным кодом подписью внедрен:
<target name="package_x" depends="package_y">
<!-- Create manifest file for x -->
<delete file="MANIFEST.MF"/>
<manifest file="MANIFEST.MF">
<attribute name="Main-Class" value="com.simontuffs.onejar.Boot"/>
<attribute name="One-Jar-Main-Class" value="com.some.main.class.name"/>
<attribute name="Class-Path" value="some_other_libs lib/bcprov-jdk15on.jar ." />
</manifest>
<!-- Copy properties file -->
<copy todir="${module.dist.dir}">
<fileset dir="${module.x.build.dir}/classes">
<include name="**/*.properties"/>
</fileset>
</copy>
<signjar destDir="${basedir}/distribute/lib/"
alias="server" keystore="${module.x.src.dir}/keystore/myCSC.jks"
storepass="pass"
preservelastmodified="true">
<path>
<fileset dir="${basedir}/distribute/lib/" includes="bcprov-jdk15on.jar" />
</path>
<flattenmapper />
</signjar>
<!-- Construct the One-JAR file -->
<echo message="Creating a ONE-jar package of the x files..." />
<one-jar destfile="${module.dist.dir}/${module.x.package}" manifest="MANIFEST.MF">
<main>
<fileset dir="${module.x.build.dir}/classes/">
<exclude name="x-config.properties"/>
</fileset>
</main>
<lib>
<fileset dir="${basedir}/distribute/lib/" />
<fileset dir="${module.common.dist.dir}" />
</lib>
</one-jar>
<signjar destDir="${module.dist.dir}"
alias="server" keystore="${module.agent.src.dir}/keystore/myCSC.jks"
storepass="pass"
preservelastmodified="true">
<path>
<fileset dir="${module.dist.dir}" includes="**/*.jar" />
</path>
<flattenmapper />
</signjar>
</target>
Хорошо, поэтому основная проблема заключается в том, что я «одноразовый» BC? И чтобы иметь возможность сделать это, я должен был бы подписать итоговый пакет с одним банком, я прав? Есть ли способ проверить это без покупки CodeSigningCert? Как-то с самоподпиской? – Jokkeri
Да, проблема заключается в неподписанной «одной баночке». В приведенной ссылке вы можете увидеть процедуру получения сертификата подписи кода. Oracle выпускает сертификаты для тестирования (см. Http://www.oracle.com/technetwork/java/javase/tech/getcodesigningcertificate-361306.html#jcacodesigning). Вероятно, будет работать самозаверяющий сертификат с подходящим «ключ-употреблением». Необходимо будет импортировать публичную часть в доверительный магазин JVM и не будет работать с апплетами или JavaWebStart. – pedrofb
Я помню, что у меня есть CodeSigningCertificate из другого проекта, но мне пока не повезло. Я добавил скрипт Ant для создания одной банки в оригинальное сообщение, что я делаю неправильно? В соответствии с этим постом http://stackoverflow.com/questions/19029575/bouncycastle-cryptography-provider-library-used-with-applet-on-java-7u40 Я снова подписываю BC с моим в CSC. – Jokkeri