Ответ 1
Как уже упоминалось, это еще не возможно с SunMSCAPI. На самом деле есть запрос расширения, который можно проголосовать за исправление проблемы.
Проблема здесь: https://bugs.openjdk.java.net/browse/JDK-8026953
Я пытаюсь загрузить сертификаты непосредственно из магазина Microsoft, чтобы избежать необходимости экспортировать сертификаты из хранилища MS и затем импортировать их в хранилище JKS.
Мне удалось получить сертификаты, созданные из типичного шаблона веб-сервера AD CS, используя устаревшую криптографию непосредственно из хранилищ MS с использованием SunMSCAPI.
Однако SunMSCAPI не поддерживает современные шифры CNG, которые я использую, в частности, асимметричное шифрование RSA-2048, хеширование SHA-384 и цифровую подпись ECDSA-384.
Можно ли загружать сертификаты следующего поколения из хранилищ MS с помощью Java? Я нахожусь на jdk1.8.0_45. Существует ли альтернатива SunScAPI, предоставляющая доступ к JCE поставщику JCE, которая может обрабатывать CNG? Я подозреваю, что ему придется использовать JNI или JNA для доступа к собственному API CNG для Windows.
Я пробовал Pheox JCAPI без успеха. Он поддерживает RSA и DSA, но не ECDSA. Я не пробовал Bouncy Castle, но я понимаю, что он не предлагает такую возможность.
Есть ли другие готовые альтернативы поставщика JCE для SunMSCAPI, которые могут обрабатывать CNG, я мог бы попробовать?
Обновление: JCAPI v2 поддерживает только поддержку RSA, ECDH, запланированную на v3 в следующем году.
Обновление: некоторые из них предположили, что установка Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files для Java 8 может решить это, но Нет, это не помогает, поскольку проблема заключается в том, что SunMSCAPI поддерживает только шифры RSA, как можно видеть, глядя на исходный код.
Как уже упоминалось, это еще не возможно с SunMSCAPI. На самом деле есть запрос расширения, который можно проголосовать за исправление проблемы.
Проблема здесь: https://bugs.openjdk.java.net/browse/JDK-8026953
спецификация утверждает
Из-за правил импорта в некоторых странах реализация Oracle предоставляет файл политики криптографической юрисдикции по умолчанию, который ограничивает силу криптографических алгоритмов.
Если требуются более строгие алгоритмы (например, AES с 256-битными ключами), файлы Jur Unlimited Strength Jurisdiction Policy должны быть получены и установлены в JDK/JRE.
Пользователь несет ответственность за проверку того, что это действие допустимо в соответствии с местными правилами.
Загрузите JCE Unlimited Strength Jurisdiction Policy Files и поместите его в свою папку безопасности jre.