Le fournisseur de sécurité PKCS11 du PKCS11 de Sun manque de fonctionnalité dont nous avons besoin.
Donc, j'ai écrit une version améliorée de celui-ci en utilisant les sources d'origine. P>
Malheureusement, l'infrastructure JCE rejette le nouveau fournisseur Toute suggestion Comment signer le nouveau fournisseur pour le faire
Travailler avec JCE? P>
"JCE ne peut pas authentifier le fournisseur" em>
parce qu'il n'est pas correctement signé. P>
javax.crypto.jcesecurity.verifyProviderjar (...) code> lancers.
(Ça appelle javax.crypto.jarverifier.verify () code>) p>
5 Réponses :
Le processus est décrit dans le document, " Comment mettre en place un fournisseur. " p>
Cela implique un e-mail Soleil Strike> Oracle des informations (y compris la CSR que vous avez générée pour votre clé de signature), puis faxer un document de confirmation. Obtenir votre certificat signé peut prendre une semaine ou plus, alors planifiez à l'avance. p>
Il vous suffit de signer votre fournisseur s'il fournit des services restreints par certains gouvernements (répresssifs). Par exemple, un Si vous fournissez l'un de ces services, Il n'y a aucun moyen de cela: em> Vous avez besoin d'un certificat de signature de code délivré par Sun. (L'un d'IBM pourrait aussi fonctionner; si je me souviens bien, leur CA signé par code est soutenue, mais je ne sais rien de leur processus d'émission.) P> implémentation de Cipher code> est un "service" restreint, tandis que
MessageDigest code> est un service sans restriction. Je suppose avec le message que vous obtenez, que vous essayez de fournir un service restreint. P>
Vous devez signer le pot avec "code JCE Signature de ca". Dans toutes les distributions Java actuelles, seuls 2 CAS (Sun et IBM) sont intégrées (codées dur) et il n'ya aucun moyen d'ajouter la vôtre. Nous avons essayé de travailler avec Sun pour signer notre fournisseur et c'est presque impossible. Ils n'émettraient pas de certificats intermédiaires CA, ce qui signifie que vous devez passer à travers le problème à chaque fois que vous faites un changement. P>
Pourquoi ne vous utilisez pas votre propre bibliothèque? Vous utilisez une API standard pour l'interopérabilité entre différentes Jces. Mais ce n'est pas réaliste pour Cryptoki / SmartCard Stuff En ce moment, il est presque toujours nécessaire d'écrire un code personnalisé pour interagir avec l'API spécifique du fournisseur. Vous pouvez même faire votre code Mimic JCE API pour minimiser les changements de code. P>
J'ai eu deux certificats du soleil, sans problème. Ils étaient très utiles et réactifs.
Voulez-vous dire que vous obtenez un «certificat de signature du code JCE» du soleil? Ils utilisent une racine de CA spéciale pour JCE "Code JCE Signing CA". Donc, la signature de code régulier ne fonctionne pas.
Oui, je veux dire le cert que vous devez signer un fournisseur JCE.
Oh, je suppose que notre définition de problèmes est différente :) obtenir un code de signature de code régulier est assez facile. Ce n'est pas un problème. Cependant, Sun nous a exigé de demander une licence d'exportation pour utiliser une cryptographie forte du département du commerce pour émettre un certificat de signature JCE. C'est beaucoup trop de problèmes pour nous.
C'est bizarre. Nous n'avions pas à faire cela à chaque fois (nous sommes aux États-Unis). La signature est tenue d'empêcher importer i> d'un fournisseur dans des pays répressifs, de ne pas contrôler l'exportation des États-Unis.
@Zzcoder, les mains du soleil sont liées à la suite de restrictions Gouvt. Ce n'est pas comme si ils vous donnent un temps difficile.
Une alternative consiste à concevoir votre fournisseur personnalisé à l'aide de OpenJDK. Il s'agit du projet open-source parrainé par Sun / Oracle et fournit la base de code pour sa libération officielle. OpenJDK n'exige pas que les fournisseurs soient signés. OpenJDK est disponible (par défaut, maintenant) sur plusieurs distributions Linux. Malheureusement, il ne semble pas être facilement disponible sur Windows ou Macintosh. Si vous exécutez Windows ou Macintosh, je vous recommande d'installer Linux dans un VM. P>
Si vous devez développer sur Windows ou Mac, vous pouvez copier le fichier JCE.jar d'une installation OpenJDK sur JCE.jar (dans votre annuaire Java Lib) d'une installation officielle. Cela contournera efficacement le processus d'authentification JAR. Assurez-vous de remettre le fichier JCE.jar d'origine lorsque vous avez terminé de développer, cependant. P>
OpenJDK pour Windows est disponible .
uniquement pour des informations supplémentaires, j'ai eu la même exception lorsque je construis un pot (Eclipse Juno) avec l'option "Extrait de bibliothèques requises dans le pot généré" à la place des «bibliothèques requises obligatoires vers le bocal générées» P>
Eh bien, après avoir lu sur la poignée de main avec une certaine autorité Oracle, ma solution écrit une classe de chiffrement indépendante avec propre em> la vérification de la signature, qui en cas d'autres fournisseurs que "moi" des délégués à Cela semble être obligatoire car il n'y a presque pas d'algorithme disponible sur toutes les versions Java, les limites de la force des algorithmes ne sont pas satisfaisantes et essentiellement, Oracle n'a pas besoin de savoir sur mes algorithmes de cryptage. P> javax.crypto.cipher code>. p>
FYI: Nous avons demandé un certificat au soleil et l'ai eu 3 jours ouvrables, pas de tracas. Le certificat peut être utilisé pour signer autant de versions dont nous avons besoin. Comme cette procédure dépend de votre emplacement, il peut être intéressant de mentionner que nous opérons en Suisse, en Europe.