2016-01-04 3 views
1

Мне нужно использовать PKCS # 11 с Java 7 на 64-битной Windows для чтения сертификатов со смарт-карт. The oracle docs говорят, что нет провайдера Sun PKCS # 11 для 64-битной Windows. Если я правильно понимаю, это означает, что даже если у меня есть родная библиотека PKCS # 11, у меня нет классов Java-моста для взаимодействия с собственной реализацией PKCS # 11. Какие у меня варианты? Я могу думать об этом:PKCS # 11 на Java 7 Windows 64 бит

  • Используйте внешнюю программу, например. утилита командной строки для взаимодействия со смарт-картой и вывода вывода в мое приложение Java
  • Как-то реализовать отсутствующий поставщик PKCS # 11 в Java? (Я хочу, чтобы избежать работы)
  • Использовать стороннюю библиотеку Java, которая реализует отсутствующий поставщик Sun?

После долгих поисков я не нашел решение. Самая близкая была реализация OpenJDK, но я не могу переключиться с Oracle JDK на OpenJDK.

Я что-то упустил? Почему нет очевидных решений? Какие у меня варианты?

Большое спасибо.

ответ

1

Причина, по которой в самой Java 7 нет никаких параметров, заключается в том, что вы используете продукт с истекшим сроком службы. Вы действительно должны перейти на Java 8.

При этом поставщик Sun/Oracle PKCS # 11 строится на PKCS#11 wrapper from IAIK. Поскольку существует 64-разрядная версия провайдера для Java 8, это, вероятно, означает, что ее можно также скомпилировать для Java 7.

Однако, даже если вы получите оболочку для работы, это не обязательно означает, что вы получаете работу с провайдером Java 7. Поставщики Java 7 также должны быть подписаны, поэтому у вас наверняка возникнут проблемы с этим, даже если вы могли бы заставить провайдера работать с провайдером Java 7 PKCS # 11. Однако вы можете использовать функциональность PKCS # 11 напрямую. Конечно, вы потеряете преимущества провайдера, в основном, взаимодействие с API более высокого уровня для TLS, XML-digsig и т. Д.

Конечно, IAIK также продает своего собственного провайдера, который оценивается безопасностью и т. Д. Часть документация гласит:

Обратите внимание, если у вас есть 64-битный PKCS # 11 модуль вашего криптографического аппаратного обеспечения, вы должны также использовать 64-разрядную версию родной библиотеки Wrapper, и вы должны также использовать 64- бит Java ™ VM (например, java -d64 ...).

+0

Я использовал поставщика IAIK. Это работает хорошо. – EJP

+0

Да, возможно, лучший/самый простой вариант, если вы готовы кашлять тесто. После регистрации доступны ознакомительные версии. –

+0

Спасибо. Похоже, мы перейдем на Java 8. – Atuos

0

Возможны все варианты.

Внешняя программа требует, чтобы вы записывали собственный код для каждой платформы.

Внедрение отсутствующего провайдера может быть возможно, особенно если оно существует в OpenJDK, и вы можете брать его оттуда (если разрешена лицензия).

Что касается сторонних библиотек - я знаю только наш собственный SecureBlackbox, который реализует всю внутреннюю защиту и работает с устройствами PKCS # 11 через JNI.

Смежные вопросы