L'accès Certificats de l'ordinateur Local Magasin en Java?
Est-il possible d'accéder à des certificats stockés dans le magasin de l'ordinateur Local (plutôt qu'Utilisateur Actuel) à partir d'une Servlet Java? J'ai essayé d'utiliser le MSCAPI fournisseur de l'ouverture de la section "Windows-MON" et "Windows" RACINE des magasins, mais ni contenir des certificats à partir du magasin de l'ordinateur Local.
Avez-vous obtenu ce que vous vouliez? Je vais avoir le même problème, avec pas de chance à tous.
Non, je n'ai jamais été en mesure de récupérer la machine locale certs de la pure Java, j'ai fini à l'aide de Confier du fournisseur (qui est un JNI appel) pour récupérer les certificats dont j'avais besoin.
Je vous remercie pour votre réponse. Dommage qu'il n'est pas native Java. Je pense qu'il pourrait être un problème de sécurité.
Non, je n'ai jamais été en mesure de récupérer la machine locale certs de la pure Java, j'ai fini à l'aide de Confier du fournisseur (qui est un JNI appel) pour récupérer les certificats dont j'avais besoin.
Je vous remercie pour votre réponse. Dommage qu'il n'est pas native Java. Je pense qu'il pourrait être un problème de sécurité.
OriginalL'auteur Petey B | 2010-08-31
Vous devez vous connecter pour publier un commentaire.
J'ai utilisé JNA pour accéder aux certificats en utilisant la même fenêtre de dialogue qui s'affiche si vous utilisez windows programme spécifique, ceci peut ne pas répondre à votre question, mais certainement vous permet de fournir une option pour accéder à quoi que ce soit dans un " windows chemin:
C'est juste un morceau de code qui fonctionne; n'hésitez pas à demander vos pratiques de codage.
OriginalL'auteur Tech Junkie
Le JDK par défaut de la mise en œuvre est assez limité. Autant que je sache, il ne fera que ramener RSA clés et des certificats. Il n'est pas d'un usage général, adaptateur pour MSCAPI. J'ai été en mesure d'obtenir quelques certs en arrière en utilisant le mécanisme que vous décrivez.
Je vois ce que vous voulez faire, mais: Pourquoi devrait-il vous permettent de lire dans les magasins des autres utilisateurs? La machine ont des paires de clés dans son magasin? -- si donc votre processus java aurait besoin de l'autorisation d'agir en tant que partie du système d'exploitation.
Oui la machine locale a une paire de clés dans son magasin; une idée de comment je pourrais donner mon java processus d'autorisation d'agir en tant que partie de l'OS?
C'est l'une des choses difficiles sur java, depuis java.exe est le binaire que vous avez à lui donner la permission (pas le fichier de la classe) si je me souviens bien de votre processus doivent participer activement à la demande de l'autorisation par le code natif. Je dois aussi mentionner que je suis le doute sur le système d'exploitation de l'autorisation dont vous aurez besoin. Pouvez-vous tout d'abord trusted cert (pas une paire de clés) dans les Fenêtres de la RACINE et de la récupérer?
Oui, je peux récupérer des certificats à partir de la Machine Locale Windows-magasin de RACINES fines, la Machine Locale Windows-MON magasin cependant apparaît vide de Java.
OriginalL'auteur Justin
Comme d'autres l'ont mentionné, le MSCAPI fournisseur ne donne pas accès à des certificats et des clés stockées dans le "Ordinateur Local" magasin de certificats. La raison pour cela est que MSCAPI utilise le Microsoft CryptoAPI fonction
CertOpenSystemStore
pour accéder aux certificats et des clés. Le la documentation de cette fonction expressément que "Seuls les certificats d'utilisateur sont accessibles à l'aide de cette méthode, pas le magasin de l'ordinateur local". Vous pouvez suivre cette OpenJDK bug si vous voulez suivre les progrès accomplis sur cette question.Si vous voulez une solution adéquate au problème, vous pouvez acheter le commercial Pheox JCAPI bibliothèque.
Si vous pouvez vivre avec un hack, j'ai créé un utilitaire simple qui intercepte le Jdk appel à
CertOpenSystemStore
et retourne un handle vers un virtuel magasin de certificats permettant l'accès en lecture seule pour les certificats et les clés à la fois la "Utilisateur Actuel" et "ordinateur Local" magasins de certificats. Cela a résolu mon problème, mais être conscient des limites de cet utilitaire.OriginalL'auteur oddbjorn
Les certificats que vous cherchez sont à la java fichier de magasin de clés ou sont passé dans tomcat lors du démarrage du serveur
http://tomcat.apache.org/tomcat-4.0-doc/ssl-howto.html
si vous essayez de les charger dans votre application, puis regardez ici pour faire des requêtes HTTPS, puis le HTTPClient documentation vous permettra de commencer
http://www.jdocs.com/httpclient/3.0.1/api-index.html?m=class&p=org.apache.commons.httpclient.contrib.ssl&c=AuthSSLProtocolSocketFactory&render=classic
ne sais pas si cela vous aide, mais si vous pouvez fournir plus de détails, alors vous pourriez être en mesure d'obtenir une réponse spécifique
Ce code n'est pas du tout ce que l'OP est de demander.
OriginalL'auteur Aaron Saunders