Ich versuche, Zertifikate direkt aus dem Microsoft Store zu laden, um zu vermeiden, dass Zertifikate aus dem MS-Speicher exportiert und dann in einen JKS-Speicher importiert werden müssen.Wie Laden Next Generation-Zertifikate aus dem Microsoft Keystore mit Java 8?
Es ist mir gelungen, aus einer typischen AD CS-Webserver-Vorlage mit Legacy-Krypto direkt aus den MS-Stores mit SunMSCAPI zu erstellen.
SunMSCAPI unterstützt jedoch nicht die modernen CNG-Chiffren, die ich verwende, insbesondere RSA-2048 asymmetrische Verschlüsselung, SHA-384 Hashing und ECDSA-384 digitale Signatur.
Ist es möglich, Next Generation-Zertifikate von MS-Stores mit Java zu laden? Ich bin auf jdk1.8.0_45. Gibt es eine JCE-Anbieteralternative zu SunMSCAPI, die mit CNG umgehen kann? Ich vermute, es müsste JNI oder JNA verwenden, um auf die native Windows CNG-API zuzugreifen.
Ich habe versucht Pheox JCAPI ohne Erfolg. Es unterstützt RSA und DSA, aber nicht ECDSA. Ich habe Bouncy Castle nicht ausprobiert, aber mein Verständnis ist, dass es solch eine Fähigkeit nicht anbietet.
Gibt es andere handelsübliche JCE-Provider-Alternativen zu SunMSCAPI, die mit CNG umgehen können?
Update: JCAPI v2 supports only RSA, ECDH support planned for v3 next year.
Update: Einige haben vorgeschlagen, dass die Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files for Java 8 Installation vielleicht dieses Problem zu beheben können, aber nein, das nicht hilft, da das Problem ist, dass SunMSCAPI nur RSA Chiffren unterstützt, können wie bei der Suche zu sehen die source code.
Was ist das endgültige Ziel? Offensichtlich planen Sie, die Zertifikate für einige Operationen zu verwenden. Im Allgemeinen enthält unsere SecureBlackbox Klassen zur Verwendung von Windows CryptoAPI und CNG (via JNI). Diese Klassen werden dann mit SecureBlackbox-Operationen verwendet und sind nicht für APIs von Drittanbietern passierbar (auf der anderen Seite deckt SecureBlackbox alle gängigen Sicherheitsstandards, Protokolle und Algorithmen ab , so dass es nicht nötig ist, andere Bibliotheken anzurufen). –
Das Hauptziel ist SSL. Idealerweise könnte ich die Standardeinstellungen von javax.net.ssl. * Verwenden, um eine JVM-Instanz so zu konfigurieren, dass sie den Microsoft-Schlüsselspeicher anstelle des JKS-Standards verwendet, um Zertifikate abzurufen. – fstarnaud
Nur für den Fall - SecureBlackbox enthält eine eigene SSL-Engine und verwendet die Zertifikate, die mit anderen Klassen der Bibliothek erhalten werden (einschließlich TElWinCertStorage, um Zertifikate von Windows zu erhalten). –