Библиотека PKCS # 11 не найдена в 64-битной Windows - PullRequest
0 голосов
/ 21 февраля 2019

На моей работе требуется подписать XML-файл сертификатом от SmartCard.Все отлично работает, но на 32-битной Windows 7 VM.Проблемы возникают, когда я пытаюсь использовать один и тот же код в 64-битной Windows 10. Я получаю сообщение об ошибке «PKCS # 11 not found» и «no such алгоритма».Я использую пакет xades4j.Я пробовал, вероятно, все решения, найденные в Интернете, т.е.

  1. Использовал различные библиотеки .dll (pkcs11.dll, opensc-spy.dll, CPPkiP.dll, esp2003csp11.dll) в 32 и 64версии битов.
  2. Поместил .dll в каталоги System32 и SysWOW64.
  3. Обновлены драйверы для моего ридера (IDBridge CT30).
  4. Изменен jre на 32 бита.
  5. Используемые решения из Справочного руководства PKCS11 (без xades4j) - он также работал только на 32-разрядных системах.

Ничего не помогает, и всегда возникают одни и те же исключения.Если у кого-то есть идеи, что еще я мог бы сделать, я буду очень благодарен за советы.

С наилучшими пожеланиями.

Caused by: java.security.KeyStoreException: PKCS11 not found
at java.security.KeyStore.getInstance(Unknown Source)
at java.security.KeyStore$Builder$2$1.run(Unknown Source)
at java.security.KeyStore$Builder$2$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
... 7 more
Caused by: java.security.NoSuchAlgorithmException: no such algorithm: PKCS11 for provider SunPKCS11-SmartCard
at sun.security.jca.GetInstance.getService(Unknown Source)
at sun.security.jca.GetInstance.getInstance(Unknown Source)
at java.security.Security.getImpl(Unknown Source)
... 11 more

1 Ответ

0 голосов
/ 20 марта 2019

Я нашел библиотеку, которая решила мою проблему.Это https://github.com/esig/dss. Я использовал JavaSE11 (jdk-11.0.2), файл pkcs11.dll, расположенный в каталоге C: / Windows / System32.Перед запуском приложения необходимо добавить аргумент VM -Djava.security.debug = sunpkcs11, pkcs11

...