OpenSSL с Java

Мне нужно использовать OpenSSL в веб-проекте Java, и я ничего не знаю о "OpenSSL".

Как я могу интегрировать OpenSSL с моим проектом? есть ли хорошие фундаментальные уроки, чтобы узнать это?

Ответ 1

Прежде всего: для чего нужна библиотека?

  • Если вы собираетесь использовать простые криптографические функции, используйте компоненты Java SE Security, развернутые вместе с JDK.
  • Если вам нужны более сложные функции (например, некоторые форматы цифровой подписи и т.д.), используйте криптографическую библиотеку (BouncyCastle является одной из самый популярный)
  • Но если вам нужно открыть SSL-соединения из кода Java и обработать сертификаты сертификатов и т.д., вам не понадобится ни одно из них:
    • Если вы работаете в контейнере Java EE, ваш контейнер может проверять входящие запросы SSL: это просто вопрос конфигурации
    • Кроме того, если вам нужно подключиться к порту SSL, JDK представляет некоторые базовые классы для этого (см. этот пример). Обратите внимание, что в этом случае вам нужно будет установить некоторые системные свойства в вашей java-команде.

Подобно этим свойствам:

-Djavax.net.ssl.keyStore=keystore_path
-Djavax.net.ssl.keyStorePassword=password
-Djavax.net.ssl.trustStore=truststore_path
-Djavax.net.ssl.trustStorePassword=trustword

Ответ 2

Все говорят о BouncyCastle, но в нашем прецеденте выиграла библиотека Gnu Crypto. Родной java.

Наша база данных (аэроспейс) тратит не менее 10% времени на хэш-вычисления в java для некоторых клиентов, просто потому, что эти реализации медленны. Я приветствую, когда на всех машинах Linux есть встроенная реализация криптографических библиотек. Я думал, что некоторые из виртуальных машин Java7 будут включать в себя больше алгоритмов, но я их еще не видел.

Ответ 3

Вам нужно ответить на несколько важных вопросов перед любыми предложениями

1) Вы действительно хотите назвать С++ (native) форму реализации JAVA?

2) Каковы особенности в openssl, которые не могут быть решены JCE и Bouncycastle

3) Ограниченность области ограничена использованием сертификатов, сгенерированных openssl, дешифрование файлов, сгенерированных openssl?

Ответ 4

Лучшее решение: используйте встроенную защиту Java для простых задач или используйте BouncyCastle для более продвинутых.

Если вам нужно использовать OpenSSL с Java, у вас есть 2 варианта:

  • Вызов openssl как процесс из Java.
  • Сделайте слой JNI для OpenSSL, но для меня это кажется пустой тратой времени. Ни один из них не является действительно хорошим способом сделать это.