2010-01-07 16 views
0

Je ne peux pas comprendre le schéma général en utilisant des certificats. Par exemple: J'ai un compte sur le site Web. J'ai name et password. Que dois-je faire pour me connecter à ce site? - Je devrais ouvrir _https://website:443/login et remplir les champs, et si tout va bien, j'obtiendrai l'admission.Comment puis-je utiliser le certificat de l'utilisateur?

Maintenant, je voudrais effectuer ces étapes par programme usin java + httpclient (apache). J'ai écrit:

client = new DefaultHttpClient(); 

client.getParams().setParameter(ClientPNames.COOKIE_POLICY, 
           CookiePolicy.BEST_MATCH); 
client.setCookieStore(new BasicCookieStore()); 
client.getCredentialsProvider() 
     .setCredentials(new AuthScope(ADDRESS, new Integer(PORT)), 
         new UsernamePasswordCredentials(USERNAME, USERPWD)); 

et je créer trustStore avec le certificat du serveur:

System.setProperty("javax.net.ssl.trustStore", "./KeyStore/myca"); 

où 'myca' ont été faites avec 'InstallCert.java' - produit de dim.

Mais je voudrais effectuer toutes ces étapes par programme, comme navigateur (FFox, ou Opera) importer le certificat du serveur ... L'utilisateur veut juste utiliser uniquement mon application, pas un ensemble d'application supplémentaire.

Comment puis-je l'exécuter?

Et maintenant, le principal problème: pourquoi les serveurs ne nécessitent pas de certificat d'utilisateur? Et comment puis-je utiliser mon propre certificat pour m'authentifier? (Si j'ai un certificat d'utilisateur, je ne aurai pas besoin « name''password » pour se connecter au serveur?)

Répondre

3

pourquoi ne pas les serveurs nécessitent un certificat de l'utilisateur?

Les serveurs ne nécessitent pas de certificats d'utilisateur, car la plupart des utilisateurs n'en ont pas, ne savent pas ce que c'est et comment l'obtenir. Et même s'ils le voulaient, un tel certificat est difficile ou coûteux à obtenir, de sorte que beaucoup d'utilisateurs n'en obtiendront pas.

Ainsi, tout serveur nécessitant un certificat client réduirait probablement le nombre d'utilisateurs d'un facteur 1000. La plupart des propriétaires de serveurs ne le souhaitent pas.

Si j'ai un certificat d'utilisateur je pas besoin « name''password » pour se connecter à serveur?

Dépend de vos besoins. Exiger un certificat + nom d'utilisateur/mot de passe serait considéré comme une authentification à deux facteurs, ce qui est une forme de protection plus forte, ne nécessitant qu'un seul facteur. Il serait encore plus fort en demandant une sorte d'identification biométrique.

Comment puis-je l'exécuter?

Effectuez exactement quoi? Vous parlez de faire des choses "par programmation", mais vous présentez déjà du code ...?

Et comment puis-je utiliser mon propre certificat pour m'authentifier?

Cela doit être fait dans la configuration de votre serveur. Vous devez configurer un magasin de confiance contenant les certificats racines de racine de confiance + exiger l'authentification du client dans la configuration ssl. par exemple, recherchez here pour clientauth.