IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Sécurité Java Discussion :

nssPKCS11 pour lister certificat


Sujet :

Sécurité Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 108
    Par défaut nssPKCS11 pour lister certificat
    Bonjour à tous,

    j'essaye depuis peu de fouiller un peu manuellement dans le magasin de certificat de thunderbird

    je voudrai tout simplement dans un premier temps lister les certificats qui y sont stockés

    j'essaye d'y accéder par l'intermédiaire de la lib : "softokn3.dll"

    Pour le moment je bloque déjà à l'initialisation :p

    voila le bout de code Java on ne peut plus simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    package conec_pk11_nss;
     
    import java.security.Provider;
     
    	public class Test002 {
     
     
    	public static void main(String args[]) {
     
     
     
     
            String configName = "C:\\Documents and Settings\\user\\Application Data\\Thunderbird\\Profiles\\4pho8x5g.default\\pkcs11.config";
            Provider p = new sun.security.pkcs11.SunPKCS11(configName);
     
    	}
    }
    et le fichier pkcs11.config qui est stocké dans le profile de thunderbird :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    name=NSSSofToken
    nssLibraryDirectory=C:\\Program Files\\Mozilla Thunderbird
    description=NSS PKCS11 
    nssSecmodDirectory = "C:\\Documents and Settings\\user\\Application Data\\Thunderbird\\Profiles\\4pho8x5g.default"
    nssDbMode = readOnly
    nssModule = keystore
    attributes = compatibility
    et voila l'exception que je récupere au lancement de l'application :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Exception in thread "main" java.security.ProviderException: Could not initialize NSS
    	at sun.security.pkcs11.SunPKCS11.<init>(SunPKCS11.java:183)
    	at sun.security.pkcs11.SunPKCS11.<init>(SunPKCS11.java:86)
    	at conec_pk11_nss.Test002.main(Test002.java:14)
    Caused by: java.io.IOException: Le module spécifié est introuvable.
     
    	at sun.security.pkcs11.Secmod.nssLoadLibrary(Native Method)
    	at sun.security.pkcs11.Secmod.initialize(Secmod.java:186)
    	at sun.security.pkcs11.SunPKCS11.<init>(SunPKCS11.java:179)
    	... 2 more
    j'ai essayé de bidouiller le fichier pkcs11.config mais au final je me retrouve avec d'autre exception qui semble être pire (en gros mettre des "\\" ou des "\" ensuite j'avais lu qu'il fallait mettre dans les variable d'environnement dans le PATH : le lien vers la lib ...")

    mais la je sèche, je ne voit pas comment résoudre ce problème

    Si déjà sa bloque au début cela va être dur d'avancer !!

    merci d'avance

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 38
    Par défaut
    Slt,

    Ne pas utiliser les '\\' avec nss, remplace tout ces '\\' par des '/'

  3. #3
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 108
    Par défaut
    j'ai bien remplacer mes \\ par des / dans mon fichier config, mais l'erreur ne change pas

    Je savais que ça aller être compliquer mais je ne pensais pas être bloqué aussi vite :p

    GROS edit :

    Bon après quelque test j'ai mon fichier java comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    package conec_pk11_nss;
     
    import java.security.KeyStore;
    import java.security.Provider;
    import java.security.Security;
    import java.util.Enumeration;
     
    	public class Test002 {
     
     
    	public static void main(String args[]) {
     
     
    		try{
     
    	        String configName = "C:\\Documents and Settings\\user\\Application Data\\Thunderbird\\Profiles\\4pho8x5g.default\\pkcs11.config";
    	        Provider p = new sun.security.pkcs11.SunPKCS11(configName);
    	        Security.addProvider(p);
     
    	        Provider[] providers = Security.getProviders();
    	        for ( int i=0; i < providers.length; i++ ) {
    	            System.out.println("Provider " +i+ ": " + providers[i].getName());
    	        }
     
    	        try {
    	            KeyStore.PasswordProtection  pwd = new KeyStore.PasswordProtection("******".toCharArray());
    	            KeyStore ks = KeyStore.getInstance("PKCS11", p);
    	            ks.load(null, pwd.getPassword());
    	            System.out.println("The algorithm " + ks.getType());
    	            System.out.println("The provider " + ks.getProvider());
    	            System.out.println("the number of certs " + ks.size());
     
    	            for (Enumeration list = ks.aliases(); list.hasMoreElements() ; ) {
    	                String alias = (String) list.nextElement();
    	                System.out.println( alias ); 
     
    	            }
     
     
    	        } catch (Exception e) {
    	            e.printStackTrace();
    	            System.out.println("Wrong password");
    	        }
    		}catch(Exception e){
    			e.printStackTrace();
    		}
     
    	}
    }
    avec le fichier config suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    name = eTPKCS11
    library = C:/WINDOWS/system32/eTPKCS11.dll
    description = Etoken description
    avec ce code tout se passe bien, il me liste bien les certificat .. sauf que là ce support est un Token USB (eToken Alladin)

    or moi maintenant je souhaiterai aussi lister non pas ceux qui sont stockés sur un support USB mais directement celui du magasin Thunderbird

    et la si je ne me trompe pas de dll, j'utilise bien "softokn3.dll" que j'ai même essayé de placer dans le même dossier où était la dll pour eToken

    et là avec ce fichier config

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    name = nss
    library = C:/WINDOWS/system32/softokn3.dll
    description = nss description
    je revient toujours à la même exception levé

    Donc mes questions sont :

    1) est ce que je n'utilise pas la bonne dll pour le magasin thunderbird ?
    2) est ce que ma manière de faire ne va aller chercher que sur des support physique (donc pour le magasin local thunderbird il faudrai faire une autre manipulation)

    3) est ce que je me trompe totalement dans ma recherche qui consiste pour le moment à lister les certificats ?

    merci d'avance pour toute aide apportées !

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 38
    Par défaut
    Ton fichier de config me semble incorrect, voici ce que tu devrais avoir:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    name = NSScrypto
    nssLibraryDirectory = C:/Program Files/Mozilla Thunderbird/
    nssSecmodDirectory = C:/Users/kescatefou/AppData/Roaming/Mozilla/Firefox/Profiles/lki1rss9.default
    nssDbMode = readOnly
    nssModule = keystore
    attributes = compatibility
    En tout cas avec ce type de fichier de config je liste correctement les certificats du keystore Thunderbird

  5. #5
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 108
    Par défaut
    humm ok

    par contre moi avec ceci donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    name = NSScrypto
    nssLibraryDirectory = C:/Program Files/Mozilla Thunderbird/
    nssSecmodDirectory = C:/Documents and Settings/user/Application Data/Thunderbird/Profiles/4pho8x5g.default
    nssDbMode = readOnly
    nssModule = keystore
    attributes = compatibility
    je me retrouve avec un blocage au niveau de la 3eme ligne : il me bloque sur le "and" de Documents and Settings

    par contre si je met entre quote ce path, j'ai la même erreur qui revient par rapport au premier poste.

    il faudrait voir comment je peut faire pour protéger les espaces

    ce qui est bizarre c'est que sur le "Program File" de la seconde ligne il ne me jette aucune remarque ... ainsi que sur les autre espaces on dirait qu'il n'y a que ce "and" qui ne lui va pas !

    edit : je précise aussi que en mettant un anti slash devant l'espace ou cette espace entre simple quote ne change rien :p

    edit 2 : au final j'ai créer un fichier nss a la racine de mon C:

    dans ce dossier c:/nss j'ai coller tout le contenu de mon fichier profile (le .default) et tout le contenu de mon dossier d'install de thunderbird

    j'ai donc pour ces deux ligne changer le lien

    nssLibraryDirectory = C:/nss
    nssSecmodDirectory = C:/nss

    et là je retrouve ma bonne vielle erreur .. donc bon deja de un comment protéger les espaces dans un fichier .config

    et de deux je ne sais pas si cela changera grand chose pour mon problème en fait car avec ce répertoire nss je revient au début du problème :p

    edit 3 : on va y arriver : j'ai essayer sur une machine Vista (machien virtuel) et le résultat reste le même, alors que cette fois ci je n'ai aucun espace

    donc le problème semble venir d'ailleurs, mais la je donne ma langue au chat !

  6. #6
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 108
    Par défaut
    Problème résolu, ce matin j'ai redémarré la machine, j'ai retenter une exécution "au cas où ..." et miracle cela a bien fonctionné

    c'est à ce taper la tête par terre :p

    Hahaaaaa les joies de l'informatique !!

    merci beaucoup pour ton aide kescatefou

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 26/10/2010, 20h40
  2. [Débutante]requete pour lister des fichiers?
    Par bouba83 dans le forum Access
    Réponses: 8
    Dernier message: 18/05/2006, 16h58
  3. Boucle en Dos pour lister des fichiers selon une date
    Par Corben dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 17/12/2005, 12h17
  4. Logiciel pour lister le Hardware
    Par busy999 dans le forum Composants
    Réponses: 10
    Dernier message: 01/09/2005, 16h58
  5. Réponses: 8
    Dernier message: 17/10/2002, 12h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo