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

Applets Java Discussion :

Signature de confiance


Sujet :

Applets Java

  1. #1
    Membre actif
    Homme Profil pro
    recherche
    Inscrit en
    Octobre 2011
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : recherche
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2011
    Messages : 144
    Points : 228
    Points
    228
    Par défaut Signature de confiance
    Bonsoir à tous,

    Je cherche à comprendre le fonctionnement d'une signature de confiance d'un applet

    J'ai des bonne bases mais je ne suis pas sur de ce que je fais car j’apprends tous seul et donc il est difficile pour moi de me corriger

    voici mon tp

    test.java

    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
    import java.applet.Applet;
    import java.awt.Graphics;
    import java.io.FileWriter;
    import java.io.PrintStream;
     
    public class test extends Applet
    {
     
        public test()
        {
        }
     
        public void paint(Graphics g)
        {
            g.drawString("Hello applet!", 50, 25);
            System.out.println("plop");
            try
            {
                FileWriter filewriter = new FileWriter("C:\\test.txt");
                filewriter.write("test");
                filewriter.close();
            }
            catch(Exception exception)
            {
                g.drawString("Echec", 50, 75);
            }
        }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    keytool -genkey -alias localhost -validity 365
    je répond aux questions et j'obtiens un .keystore

    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
    C:\Program Files\Java\jdk1.7.0_03\bin>keytool -genkey -alias localhost -validity
     365
    Entrez le mot de passe du fichier de clÚs :
    Ressaisissez le nouveau mot de passe :
    Quels sont vos nom et prÚnom ?
      [Unknown]:  localhost
    Quel est le nom de votre unitÚ organisationnelle ?
      [Unknown]:  test
    Quel est le nom de votre entreprise ?
      [Unknown]:  private
    Quel est le nom de votre ville de rÚsidence ?
      [Unknown]:  paris
    Quel est le nom de votre Útat ou province ?
      [Unknown]:  ile de france
    Quel est le code pays Ó deux lettres pour cette unitÚ ?
      [Unknown]:  Fr
    Est-ce CN=localhost, OU=test, O=private, L=paris, ST=ile de france, C=Fr ?
      [non]:  oui
     
    Entrez le mot de passe de la clÚ pour <localhost>
            (appuyez sur EntrÚe s'il s'agit du mot de passe du fichier de clÚs) :
    Ressaisissez le nouveau mot de passe :
     
    C:\Program Files\Java\jdk1.7.0_03\bin>
    ensuite je fais un fichier MANIFEST.MF que je laisse vide...

    je lance ensuite ces commandes :

    javac test.java

    jar cvmf MANIFEST.MF test.jar test.class

    et pour obtenir une signature de confiance je fais ceci

    wget http://www.startssl.com/certs/sub.class1.server.ca.crt

    keytool -import -alias startcom.ca.sub -file sub.class1.server.ca.crt

    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    C:\Program Files\Java\jdk1.7.0_03\bin>keytool -import -alias startcom.ca.sub -fi
    le sub.class1.server.ca.crt
    Entrez le mot de passe du fichier de clÚs :
    PropriÚtaire : CN=StartCom Class 1 Primary Intermediate Server CA, OU=Secure Dig
    ital Certificate Signing, O=StartCom Ltd., C=IL
    Emetteur : CN=StartCom Certification Authority, OU=Secure Digital Certificate Si
    gning, O=StartCom Ltd., C=IL
    NumÚro de sÚrie : 18
    Valide du : Wed Oct 24 22:54:17 CEST 2007 au : Tue Oct 24 22:54:17 CEST 2017
    Empreintes du certificat :
             MD5:  30:B0:5A:F7:B2:F4:BE:0C:28:67:15:EA:CC:5B:24:20
             SHA1 : F6:91:FC:87:EF:B3:13:53:54:22:5A:10:E1:27:E9:11:D1:C7:F8:CF
             SHA256 : CB:2D:B5:73:61:0F:40:1E:8D:60:29:17:BB:BE:6A:B4:16:22:55:F2:08
    :EF:AD:90:9D:54:40:69:1A:A0:20:3C
             Nom de l'algorithme de signature : SHA1withRSA
             Version : 3
     
    Extensionsá:
     
    #1: ObjectId: 2.5.29.14 Criticality=false
    SubjectKeyIdentifier [
    KeyIdentifier [
    0000: EB 42 34 D0 98 B0 AB 9F   F4 1B 6B 08 F7 CC 64 2E  .B4.......k...d.
    0010: EF 0E 2C 45                                        ..,E
    ]
    ]
     
    #2: ObjectId: 2.5.29.35 Criticality=false
    AuthorityKeyIdentifier [
    KeyIdentifier [
    0000: 4E 0B EF 1A A4 40 5B A5   17 69 87 30 CA 34 68 43  N....@[..i.0.4hC
    0010: D0 41 AE F2                                        .A..
    ]
    ]
     
    #3: ObjectId: 2.5.29.31 Criticality=false
    CRLDistributionPoints [
      [DistributionPoint:
         [URIName: http://www.startssl.com/sfsca.crl]
    , DistributionPoint:
         [URIName: http://crl.startssl.com/sfsca.crl]
    ]]
     
    #4: ObjectId: 2.5.29.32 Criticality=false
    CertificatePolicies [
      [CertificatePolicyId: [1.3.6.1.4.1.23223.1.2.1]
    [PolicyQualifierInfo: [
      qualifierID: 1.3.6.1.5.5.7.2.1
      qualifier: 0000: 16 22 68 74 74 70 3A 2F   2F 77 77 77 2E 73 74 61  ."http://w
    ww.sta
    0010: 72 74 73 73 6C 2E 63 6F   6D 2F 70 6F 6C 69 63 79  rtssl.com/policy
    0020: 2E 70 64 66                                        .pdf
     
    ], PolicyQualifierInfo: [
      qualifierID: 1.3.6.1.5.5.7.2.1
      qualifier: 0000: 16 28 68 74 74 70 3A 2F   2F 77 77 77 2E 73 74 61  .(http://w
    ww.sta
    0010: 72 74 73 73 6C 2E 63 6F   6D 2F 69 6E 74 65 72 6D  rtssl.com/interm
    0020: 65 64 69 61 74 65 2E 70   64 66                    ediate.pdf
     
    ]]  ]
    ]
     
    #5: ObjectId: 2.5.29.15 Criticality=true
    KeyUsage [
      Key_CertSign
      Crl_Sign
    ]
     
    #6: ObjectId: 1.3.6.1.5.5.7.1.1 Criticality=false
    AuthorityInfoAccess [
      [
       accessMethod: ocsp
       accessLocation: URIName: http://ocsp.startssl.com/ca
    ,
       accessMethod: caIssuers
       accessLocation: URIName: http://www.startssl.com/sfsca.crt
    ]
    ]
     
    #7: ObjectId: 2.5.29.19 Criticality=true
    BasicConstraints:[
      CA:true
      PathLen:2147483647
    ]
     
    Faire confiance Ó ce certificat ? [non] :  oui
    Certificat ajoutÚ au fichier de clÚs
     
    C:\Program Files\Java\jdk1.7.0_03\bin>
    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
    C:\Program Files\Java\jdk1.7.0_03\bin>keytool -list
    Entrez le mot de passe du fichier de clÚs :
     
    Type de fichier de clÚs : JKS
    Fournisseur de fichier de clÚs : SUN
     
    Votre fichier de clÚs d'accÞs contient 2 entrÚes
     
    startcom.ca.sub, 9 dÚc. 2013, trustedCertEntry,
    Empreinte du certificat (SHA1) : F6:91:FC:87:EF:B3:13:53:54:22:5A:10:E1:27:E9:11
    :D1:C7:F8:CF
    localhost, 9 dÚc. 2013, PrivateKeyEntry,
    Empreinte du certificat (SHA1) : 95:93:A0:EA:A5:7F:DB:29:4C:08:51:AF:4F:3C:53:86
    :C0:41:BB:DD
     
    C:\Program Files\Java\jdk1.7.0_03\bin>
    donc suivant ma logique qui n'est que la mienne bien sur si je fais :

    jarsigner -verbose test.jar startcom.ca.sub

    j'obtiens un jar signé qui fonctionne parfaitement mais l'éditeur reste inconnu
    j'ai essayé plusieurs source pour comprendre mon erreur

    mes conclusions sont

    1: le crt n'est plus de confiance parce qu’il est gratuit ?!

    2: je devrais obtenir un fichier .csr qui devrais être modifier avec http://localhost

    3: je dois utiliser un fichier .jnlp avec all-permission dans mon jar ??

    4: le fichier manifest doit être pré-remplis

    voilà j'ai vraiment fais des recherches approfondi avant de poster

    merci de votre aide

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Houla, y a du mélangeage à plusieurs niveau. On va remettre les chsoes dans l'ordre (sans donner les commandes, parce que je ne les connait plus).

    Pour signer un jar il te faut:
    • Une clé privée. Le genre que tu génère avec keytool ou avec les outils SSL.
    • Un jar (on ne peux pas signer des classes hors d'un jar)


    Pour que la signature soit considérée comme "de confiance", il faut
    • Lier à la clé publique une signature de cette clé par un autorité de confiance
    • Signer en utilisant la clé privée associée à la clé publique
    • Que la clé publique soit considérée comme valide (il y a une date d'expiration sur chaque clé)
    • Que l'autorité de confiance soir reconnue par la JVM


    Dans ton cas, seul le point 3 est rencontré.

    Tu as importé le .crt dans ton keystore, mais ce .crt ne contient qu'une clé publique, pas une clé privée.
    Il n'y a aucun lien entre ta clé privée autogénérée et la clé publique que tu as importée, si ce n'est qu'elles sont toutes les deux dans le même keystore.

    Tu dois, après avoir autogénéré ta paire publique / privée:

    • Générer un certificate signing request
    • Envoyer ce certificate signing request chez startssl.com
    • Récupérer la version signée une fois que c'est fait
    • Mettre cette version signée dans le keystore
    • Y adjoindre éventuellement le .crt pour que le chemin de signature soit complètement renseigné


    Et après ça tu aura un signature valide mais.... non reconnue. En effet, tu utilise la version "gratuite" (class1) qui ne vérifie pas l'identité de l'organisation et du demandeur. Cependant, pour de la signature de code, il est nécessaire d'avoir du class 2 (vérification identité et organisation). Ceci coûte des ressources (il faut vérifier les documents démontrant l'existence de l'entreprise, vérifier les pièces d'identité, vérifier que le demandeur fait bien partie de l'entreprise, etc). C'est une procédure longue et coûteuse. Mais la sécurité a un prix


    Toutes les instructions sont d'ailleurs ici pour java. C'est pour la version serveur, mais les isntructions sont similaires pour la version signature. Si ce n'est que tu peux ouvrir le portefeuille.

    https://forum.startcom.org/viewtopic.php?t=1390

  3. #3
    Membre actif
    Homme Profil pro
    recherche
    Inscrit en
    Octobre 2011
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : recherche
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2011
    Messages : 144
    Points : 228
    Points
    228
    Par défaut
    Bonjour et merci d'avoir pris le temps !

    Ces précisions m'ont éclairer et effectivement une signature de type class/object n'est possible qu'en classe 2

    donc je vais recommencer en intégrant mon certificat autosigné dans mon navigateur pour comprendre toute la procédure !

    encore merci !!!

    sujet résolu

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 138
    Points : 55
    Points
    55
    Par défaut
    Salut bytecode,

    Tu as réussi à faire un applet sans message d'erreur avec j7u45 signé gratuitement ? Je serais intéressé par un tutorial car je suis plus que perdu

    Merci

  5. #5
    Membre actif
    Homme Profil pro
    recherche
    Inscrit en
    Octobre 2011
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : recherche
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2011
    Messages : 144
    Points : 228
    Points
    228
    Par défaut
    Salut,

    non malheureusement pas encore mais sur starssl la class 2 n'est qu'a 59€ ce que je trouve raisonnable si on a besoin de payer !

    Je pense pouvoir y arriver en local en incluant le certificat dans mon navigateur.

    si j'y arrive je ferais un petit tuto volontiers

    bonne chance !

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 138
    Points : 55
    Points
    55
    Par défaut
    T'es obligé d'une classe 3 signed certifca pour une JAR.. et c'est pas le prix la :-(

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

Discussions similaires

  1. Privilèges des "Membres du club" : signature, pièces jointes illimitées, etc.
    Par Anomaly dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 0
    Dernier message: 28/07/2004, 11h20
  2. Peut-on avoir confiance en mysqldump ?
    Par ROUMEG dans le forum Administration
    Réponses: 7
    Dernier message: 01/07/2004, 11h10
  3. afficher la signature des opérations dans XDE
    Par ChristopheH dans le forum Rational
    Réponses: 1
    Dernier message: 24/05/2004, 15h41

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