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 :

liste de certificat révoqués


Sujet :

Sécurité Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    7
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 7
    Par défaut liste de certificat révoqués
    salem;

    Très urgent
    je veux savoir comment déterminer si mon certificta est révoqué?
    je suis débutante en java j'ai déja fait quelque recherche et j'ai trouvé qu'il fallait lire tout d'abord la CRL et vérifire si son extension "2.5.29.31" existe t'elle ou non
    j'ai utiliser la méthode getCriticalExtensionOIDs();
    et elle m'affiche seulement "2.5.29.19"
    je ne sais pas comment faire?

    voila mon code pour extraire les données de mon certificat
    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
    import java.io.FileInputStream;
    import java.security.cert.CertificateFactory;
    import java.security.cert.X509Certificate;
    import javax.swing.JOptionPane;
     
    public class Certificat {
     
     public static void main(String args[]) throws Exception {
     
        FileInputStream fr = new FileInputStream("C:\\ance.cer");
        CertificateFactory cf = CertificateFactory.getInstance("X509");
        X509Certificate c = (X509Certificate) cf.generateCertificate(fr);
        String phrase="Vesrion: V"+c.getVersion()+"\n Numéro de série: "+c.getSerialNumber()+
                "\n Algorithme de signature: "+c.getSigAlgName()+"\n Emetteur: "+c.getIssuerDN()+
                "\n Valide à partir: "+c.getNotBefore()+"\n Valide jusqu'à: "+c.getNotAfter()+
                "\n Objet: "+c.getSubjectDN()+"\n Clé publique: "+c.getPublicKey();
     
           JOptionPane.showMessageDialog(null,phrase);
           JOptionPane.showMessageDialog(null,c.getCriticalExtensionOIDs());
     
     }
    merci d'avance

  2. #2
    Expert confirmé
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 419
    Par défaut
    Tu devrais commencer par lire la RFC 3280. C'est la base de chez base. Là dedans tu as tout d'expliqué sur comment on fait pour vérifier qu'un certificat est légitime, qu'il n'est pas révoqué etc...

    Avec la JCE, on fait ceci avec les classes :
    CollectionCertStoreParameters
    CertStore
    CertificateFactory
    CertPath
    TrustAnchor
    CertPathValidator
    PKIXParameters
    (j'en oublie peut être)

    C'est CertPathValidator qui permet de déclencher la validation du certificat (méthode validate()).

    Ce processus n'est pas anodin, il y a un algorithme standard de validation d'un certificat qui est décrit dans la RFC 3280. Simplement contrôler que le n° de série du certificat n'est pas présent dans une CRL ne suffit pas. Il faut contrôler toute la chaine de certification de ton certificat à vérifier ET celle de ta CRL. Je vais y revenir par la suite.

    Pour info, l'OID 2.5.29.31, si il existe, contient l'adresse de distribution des CRLs pour ce certificat. L'inexistence de cette extension ne signifie pas qu'il n'y a pas de CRL à vérifier. Cela signifie juste que l'adresse de distribution des CRLs n'est pas indiquée . (On est d'accord que l'extension dont on parle ici c'est une extension présente sur le certificat à vérifier et pas sur la CRL, ce qui serait d'ailleurs absurde puisqu'elle indique où trouver les CRLs.)
    Si l'adresse de distribution des CRLs n'est pas indiquée sur le certificat, il te faut contacter l'organisme qui s'occupe de la gestion de la PKI pour savoir où les trouver. Ça peut être un site web (donc via HTTP ou FTP), ça peut être une annuaire LDAP, ...

    Je reviens au processus de vérification, un algo de vérification standard est donc décrit dans la RFC 3280. La JCE a prévu des classes (celles que j'ai mentionné au début de mon post) pour gérer cet algo. Selon le provider que tu utilises, l'implémentation de cet algo va différer. Je peux te garantir que l'implémentation de BouncyCastle fonctionne correctement, par contre pour celle du SDK Java standard je n'en sais rien !
    Si tu ne comprends pas un broc de ce que je viens de dire, je te conseille vivement de lire la documentation sur le JCE et de relire la RFC 3280.

    Très urgent
    je veux savoir comment déterminer si mon certificta est révoqué?
    Oublie direct l'urgence. Pour gérer un truc pareil (juste la vérif de validité des certificats) il te faudra au moins un bon mois le temps de lire la doc, écrire un morceau de programme et les tests associés et je suis gentil.

    On ne gère pas ce genre de choses dans l'urgence. Tu peux toujours trouver sur le net un morceau de code qui va fonctionner sur le moment, ou même tout le temps, mais si tu ne comprends rien à ce que tu mets dans ton programme (ou plutôt si tu ne comprends pas exactement chaque instruction de ton programme, quel est son rôle et pourquoi elle est là) tu mets de fait la sécurité de ton application (et donc de ton client) en danger.

    Si ton chef t'impose de faire ça dans l'urgence, alors tu es face à un incompétent doublé d'un imbécile, quitte ta boite.

    Un dernier détail, si tu n'arrives pas à lire l'anglais suffisamment pour lire les RFC concernées tu peux oublier direct la programmation de fonctions de sécurité, j'ai pas encore vu de doc en français

    J'espère que ça aidera.

  3. #3
    Membre habitué
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    7
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 7
    Par défaut
    merci bien pour votre aide

  4. #4
    Expert confirmé
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 419
    Par défaut
    Une précision. Les classes que je t'ai donné sont des classes abstraites ou des interfaces. En fonction du provider de la JCE que tu vas utiliser, ces classes seront castées dans les implémentations écrites pour le provider choisi.

    Celle de BouncyCastle respecte l'algorithme de la RFC 3280.

Discussions similaires

  1. tri de liste chainée
    Par RezzA dans le forum C
    Réponses: 7
    Dernier message: 26/01/2003, 20h25
  2. Réponses: 2
    Dernier message: 04/10/2002, 09h13
  3. liste d'objets
    Par Pierrot dans le forum Langage
    Réponses: 2
    Dernier message: 27/09/2002, 09h56
  4. Compter le nombre ligne listée (COUNT) ?
    Par StouffR dans le forum Langage SQL
    Réponses: 7
    Dernier message: 02/09/2002, 09h41
  5. Listes déroulantes liées entre elles
    Par denisC dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 27/07/2002, 15h53

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