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 Axel . Évalué à 2.
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 lom (site web personnel) . Évalué à 2.
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 Axel . Évalué à 2.
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 lom (site web personnel) . Évalué à 2.
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 Axel . Évalué à 1.
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 lom (site web personnel) . Évalué à 2.
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 Axel . Évalué à 1.
http://www.mail-archive.com/commons-httpclient-dev@jakarta.apache.o(...)
Quelle version de java utilises tu ?
[^] # Re: solution ... ?
Posté par lom (site web personnel) . Évalué à 2.
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 Paerro Trime . Évalué à 2.
[^] # Re: clef
Posté par lom (site web personnel) . Évalué à 2.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.