Journal Applet signée et https

Posté par  (site web personnel) .
Étiquettes :
0
22
juin
2004
Hello,

J'ai un gros souci avec une applet signée, à exécuter à partir d'un navigateur.

Pour résumer:
applet non signée, http : OK
applet non signée, https : OK
applet signée, http : OK
applet signée, https : KO, cf message:

javax.net.ssl.SSLProtocolException: java.io.IOException: subject key, Unknown key spec: Invalid RSA modulus size.
at com.sun.net.ssl.internal.ssl.HandshakeMessage$CertificateMsg.(DashoA6275)
[beaucoup de lignes]
Caused by: java.security.cert.CertificateParsingException: java.io.IOException: subject key, Unknown key spec: Invalid RSA modulus size.
at sun.security.x509.X509CertInfo.(X509CertInfo.java:155)
[beaucoup de lignes]
Caused by: java.io.IOException: subject key, Unknown key spec: Invalid RSA modulus size.
at sun.security.x509.X509Key.parse(X509Key.java:155)

Ces messages apparaissent avant même le chargement de la classe dans le jar, qui du coup n'est pas trouvé.

Le code l'applet est on ne peut plus basique : une méthode init, qui ne contient que la ligne add(new Label("Hello World"));

J'ai le même comportement sous firefox et IE, le .jar n'a pas été modifié entre le serveur et le client, mon ami google me fait la tête.
J'ai essayé avec différentes jvm, entre autre dans le cas ou c'est la même qui compile et exécute, et le résultat est toujours le même.

Est-ce que quelqu'un aurait déjà rencontré ce souci ou aurait une piste?

Merci
  • # un sujet de commentaire

    Posté par  . Évalué à 2.

    le client web (navigateur) et le serveur disposent t il du certificat de l autorité de certification qui a signé l'applet ?
    Le serveur ne requiert il pas absolument un certificat pour le client (config apache), si oui dispose t il d un certificat signé par une autorité connue du serveur ?
    • [^] # Re: un sujet de commentaire

      Posté par  (site web personnel) . Évalué à 2.

      le client web (navigateur) et le serveur disposent t il du certificat de l autorité de certification qui a signé l'applet ?

      oui et non :o)

      En fait, j'ai essayé avec le navigateur disposant du certificat serveur, et n'en disposant pas: ça n'a rien changé (en plus, en théorie, il demande à vérifier/installer le certificat avant toute connection).
      Pour l'applet, le certificat est lu dans le keystore java, pas dans le navigateur . J'ai donc essayé avec et sans le certificat de l'AC dans le keystore. Par de différence. Et je crois que là encore si le certificat n'est pas installé, il demande confirmation. Or je n'ai même pas cette demande.

      Le serveur ne requiert il pas absolument un certificat pour le client

      Non, il y a juste un certificat serveur, rien de plus.
      • [^] # Re: un sujet de commentaire

        Posté par  . Évalué à 2.

        "En fait, j'ai essayé avec le navigateur disposant du certificat serveur, et n'en disposant pas"

        Si je ne me trompe pas, c normal, ce n est pas comme ca que ca fonctionne (corrigez moi si je me trompe).
        Le serveur envoie lui meme son certificat lors d une connexion SSL, et le client doit disposer du certif de l AC pour verifier le certif du serveur et l'installer ou non ou temporairement. Mais le client doit disposer du certif de l AC.

        "Pour l'applet, le certificat est lu dans le keystore java, pas dans le navigateur . J'ai donc essayé avec et sans le certificat de l'AC dans le keystore. Par de différence"

        Par contre là il y aurait du avoir une différence. Mais je ne connais pas Java à ce point.

        Le navigateur dispose du certif de l AC (au moins pour la premiere connexion) ?
        • [^] # Re: un sujet de commentaire

          Posté par  (site web personnel) . Évalué à 2.

          Mais le client doit disposer du certif de l AC.

          Pour être clean oui, mais avant les premiers échanges il t'affiche le le certificat du serveur, avec accessoirement la hiérarchie des certificats. Il est possible de les refuser (tu ne passes pas), les accepter pour la session, ou les accepter définitivement. Donc dans tous les cas, il est possible de ne pas les avoir préinstallés (ce qui est a peu près normal: à la première connexion sur https://linuxfr.org(...) tu n'as pas encore le certificat de l'AC).

          Par contre là il y aurait du avoir une différence. Mais je ne connais pas Java à ce point.

          En fait, ça se passe de la même façon, il demande à télécharger le certif s'il n'est pas présent.

          Enfin, vu que j'ai essayé un peu toutes les variantes, je ne pense pas que ça vienne de là.
          • [^] # Re: un sujet de commentaire

            Posté par  . Évalué à 1.

            apparement il se plaint de la structure des données recues.
            Ne faut il pas transformer un certificat créé avec openssl comme pour les navigateurs ?

            openssl pkcs12 -export -in newcert.pem -inkey newreq.pem -name "CertifNavigateur" -clcerts -out "cert.p12"
  • # De plus en plus étrange...

    Posté par  (site web personnel) . Évalué à 2.

    Sans toucher à l'applet, mais en modifiant le code de la page html.

    1ère option: le chemin du jar est donné en relatif, c'est à dire que le paramètre archive de la balise applet contient juste le nom du jar.

    2ème option: le chemin du jar est donné en absolu: http://

    3ème option: le chemin du jar est donné en absolu https://


    Bilan:

    Si j'accède à la page html via https, j'ai toujours le même pb, c'est à dire les mêmes exceptions.

    Si j'y accède par http, tous les cas fonctionnent, même celui avec un chemin absolu en https pour le jar.

    Je n'y comprends plus grand chose...
  • # solution ... ?

    Posté par  . Évalué à 1.

    à voir :

    http://www.mail-archive.com/commons-httpclient-dev@jakarta.apache.o(...)


    Quelle version de java utilises tu ?
    • [^] # Re: solution ... ?

      Posté par  (site web personnel) . Évalué à 2.

      Tu sais que je t'aime toi?

      Bingo, c'était bien ça. J'ai refait toutes les clés et certificats en utilisant moins de 2048 bits, et c'est passé.

      Ce qui me surprend plus, c'est que du côté java, tout était en moins de 2048, si je me souviens bien.

      J'ai par contre aussi modifié mon certificat serveur et l'AC émettrice pour que ça passe (et donc du coup ça a influencé sur https).

      Enfin, merci beaucoup!
  • # clef

    Posté par  . Évalué à 2.

    As-tu essayé avec une clef plus petite ? elle fait combien ta clef RSA ? 2048 ?

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.