Question

fournisseur de sécurité de Sun PKCS11 JCE manque certaines fonctionnalités dont nous avons besoin.
J'ai donc écrit une version améliorée de celui-ci en utilisant les sources originales.

Malheureusement, l'infrastructure JCE rejette le nouveau fournisseur
« entreprise criminelle commune ne peut pas authentifier le fournisseur » parce qu'il est pas correctement signé.

javax.crypto.JceSecurity.verifyProviderJar(...) jette.
(Il appelle javax.crypto.JarVerifier.verify())

Toute suggestion comment signer le nouveau fournisseur pour le faire travailler avec JCE?

Était-ce utile?

La solution

Le processus est décrit dans le document, " Comment mettre en œuvre un fournisseur. »

Il consiste à envoyer Sun Oracle certaines informations (y compris la responsabilité sociale que vous avez généré votre clé de signature), puis faxer un document de confirmation. Obtenir votre dos de certificat signé peut prendre une semaine ou plus, donc planifier à l'avance.

Vous ne devez signer votre fournisseur si elle fournit des services qui sont limités par certains gouvernements (répressifs). Par exemple, une implémentation Cipher est un « service » restreint alors que MessageDigest est un service sans restriction. Je suppose que le message que vous obtenez, que vous essayez de fournir un service restreint.

Si vous fournissez un de ces services, il n'y a pas moyen de contourner cela: Vous avez besoin d'un certificat de signature de code émis par Sun. (Un IBM pourrait fonctionner aussi;. Si je me souviens bien, leur code de signature de CA est pris en charge, mais je ne sais pas quoi que ce soit au sujet de leur processus d'émission)

Autres conseils

Une autre solution consiste à concevoir votre fournisseur personnalisé à l'aide OpenJDK. Tel est le projet open-source parrainé par Sun / Oracle, et fournit la base de code pour leur sortie officielle. OpenJDK ne nécessite pas les fournisseurs à signer. OpenJDK est disponible (par défaut, maintenant) sur plusieurs distributions Linux. Malheureusement, il ne semble pas être facilement disponible sous Windows ou Macintosh. Si vous utilisez Windows ou Macintosh, je vous recommande d'installer Linux dans une machine virtuelle.

Si vous devez développer sous Windows ou Mac, cependant, vous pouvez copier le fichier jce.jar à partir d'une installation sur OpenJDK jce.jar (dans votre répertoire Java lib) d'une installation officielle. Cela permettra de contourner efficacement le processus d'authentification Jar. Assurez-vous de mettre le fichier jce.jar d'origine quand vous avez terminé le développement, cependant.

Vous devez signer le JAR avec "Code JCE signature CA". Dans toutes les distributions Java actuelles, seulement 2 CA (Sun et IBM) sont intégrés (codé en dur) et il n'y a pas moyen d'ajouter votre propre. Nous avons essayé de travailler avec Sun pour signer notre fournisseur et il est presque impossible. Ils ne voulaient pas émettre cert CA intermédiaire, ce qui signifie que vous devez passer par la peine à chaque fois que vous faites un changement.

Pourquoi ne pas simplement votre propre bibliothèque utilisateur? Vous utilisez l'API standard pour l'interopérabilité entre les différents JCE. Mais ce n'est pas réaliste pour des trucs Cryptoki / SmartCard en ce moment, il faut presque toujours d'écrire un code personnalisé pour interagir avec le fournisseur API spécifique. Vous pouvez même faire votre code mimétique API JCE pour minimiser les changements de code.

Uniquement pour info, j'ai eu cette même exception quand je construis un fichier JAR (Eclipse Juno) avec l'option « Extraire Les bibliothèques nécessaires en produit JAR » au lieu CORRECTEMENT « Package Les bibliothèques nécessaires dans JAR généré »

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top