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

Développement Web en Java Discussion :

Problème certificat auto-signé


Sujet :

Développement Web en Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2011
    Messages : 34
    Points : 19
    Points
    19
    Par défaut Problème certificat auto-signé
    Bonjour à vous,

    Le problème qui se pose est le suivant:
    Je lance une application depuis Internet Explorer qui est censé téléchargé un fichier JAR, puis l'exécuter avec Java WebStart.
    L'ennui, c'est que la sécurité de Java refuse de le faire. J'ai essayé de créer un certificat auto-signé
    pour que Java reconnaisse ce fichier comme un fichier sécurisé mais sans succès.
    Cependant, n'ayant que très peu de connaissance dans ce domaine, je dois bien avouer que j'ignore si ce que j'ai fait
    est correct ou non ... bref je patauge un peu.
    Quelqu'un pourrait-il me fournir un tutoriel ou m'expliquer les différentes étapes à suivre, svp?

    Merci d'avance

  2. #2
    Membre expérimenté Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Points : 1 622
    Points
    1 622
    Par défaut
    Salut,

    Citation Envoyé par dks17 Voir le message
    Bonjour à vous,
    Je lance une application depuis Internet Explorer qui est censé téléchargé un fichier JAR, puis l'exécuter avec Java WebStart.
    Merci d'avance
    Déjà remettons un peu les choses en ordre. C'est Java WebStart qui, au travers d'un fichier JNLP, va te permettre de télécharger tes .JAR sur le poste client et ainsi pouvoir lancer ton appli. Pas l'inverse

    Ensuite un certificat (auto-signé ou non) sert dans le cas d'une connexion sécurisé (ce qui ne semble pas être le cas ici) pour authentifier le serveur (ou le client) avec le quel tu échanges des données. Or toi ici tu as besoin de signer tes .jar avec un certificat pour permettre au poste client d'authentifier les archive que tu lui fournis.

    Pour ça il y a deux étapes :

    1/ Créer un certificat

    Le plus simple c'est d'utiliser l’outil keytool fournie en standard avec Java.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    keytool -genkey -keyalg RSA -keystore c:\monKeyStore.jks -alias monAlias
    Il va ensuite te falloir répondre à quelques questions pour créer ton certificat et le tour est joué.
    Cette commande te permet de créer un magasin de clés ET de générer un paire de clés dont on va se servir pour signer tes .jar

    2/ La signature

    Encore une fois le plus simple est d'utiliser les outils de Java. On utilisera cette fois ci le jarsigner
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jarsigner -keystore c:\monKeyStore.jks -signedjar monJar.signed.jar monJar.jar monAlias
    Tu peux vérifier si la signature est correcte avec la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jarsigner -verify -keystore c:\monKeyStore.jks monJar.signed.jar
    Si tu as plusieurs JAR à signer tu peux toujours te créer un petit script en batch ou en shell pour tous les signer en même temps.

    Voila n'hésites pas si tu as des question.

    Quelques liens utile pour les commande keytool et jarsigner :

    http://www.sslshopper.com/article-mo...-commands.html
    http://docs.oracle.com/javase/6/docs...s/keytool.html
    http://docs.oracle.com/javase/6/docs...jarsigner.html

    Cdt.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2011
    Messages : 34
    Points : 19
    Points
    19
    Par défaut
    Bonjour nico02 et merci pour ta réponse

    Pour ce qui est de la partie 1, je l'ai déjà fait (et même refait plusieurs fois pour être sur).
    Pour ce qui est de la partie 2, je souhaiterais en fait le faire directement depuis Maven (dans le pom.xml)

    J'ai essayé de rajouter cela dans le pom.xml:
    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
    <plugin>
    				<groupId>org.apache.maven.plugins</groupId>
    				<artifactId>maven-jarsigner-plugin</artifactId>
    				<version>1.3.2</version>
    				<executions>
    					<execution>
    						<id>sign</id>
    						<goals>
    							<goal>sign</goal>
    						</goals>
    					</execution>
    				</executions>
    				<configuration>
    					<keystore>C:\Program Files\Java\jdk1.8.0_20\test.p12</keystore>
    					<storetype>pkcs12</storetype>
    					<alias>test</alias>
    					<storepass>test</storepass>
    					<signedjar>${project.artifactId}-${project.version}.jar</signedjar>
    				</configuration>
    			</plugin>
    mais sans certitude ...

    voici le message d'erreur que je reçois quand java essaye de lancer l'application:

    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
    sun.security.validator.ValidatorException: Extended key usage does not permit use for code signing
    at sun.security.validator.EndEntityChecker.checkCodeSigning(Unknown Source)
    at sun.security.validator.EndEntityChecker.check(Unknown Source)
    at sun.security.validator.Validator.validate(Unknown Source)
    at sun.security.validator.Validator.validate(Unknown Source)
    at sun.security.validator.Validator.validate(Unknown Source)
    at com.sun.deploy.security.TrustDecider.getValidationState(Unknown Source)
    at com.sun.deploy.security.TrustDecider.validateChain(Unknown Source)
    at com.sun.deploy.security.TrustDecider.isAllPermissionGranted(Unknown Source)
    at com.sun.javaws.security.AppPolicy.grantUnrestrictedAccess(Unknown Source)
    at com.sun.javaws.security.JNLPSignedResourcesHelper.checkSignedResourcesHelper(Unknown Source)
    at com.sun.javaws.security.JNLPSignedResourcesHelper.checkSignedResources(Unknown Source)
    at com.sun.javaws.Launcher.prepareResources(Unknown Source)
    at com.sun.javaws.Launcher.prepareAllResources(Unknown Source)
    at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
    at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
    at com.sun.javaws.Launcher.launch(Unknown Source)
    at com.sun.javaws.Main.launchApp(Unknown Source)
    at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
    at com.sun.javaws.Main.access$000(Unknown Source)
    at com.sun.javaws.Main$1.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
    j'ai l'impression qu'il y a un problème avec le certificat mais a nouveau sans certitude.

    Merci d'avance,
    Cordialement

  4. #4
    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
    je ne sais pas comment tu as généré tes certificats pour les faire rentrer dans test.p12, mais tu as généré des certificats ne permettant pas la signature. Probablement des certificats destinés juste à être utilisé en SSL pour authentifier un site web, mais pas pour signer du code. Il te faut un certificat de signature de code.

    A noter que les certificats autosignés, de toutes façons, sont refusés par le JVM récentes car ils n'apportent aucune sécurité.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2011
    Messages : 34
    Points : 19
    Points
    19
    Par défaut
    Bonjour Tchize_

    Comment puis-je me procurer ou créer un certificat qui puisse signer du code?
    et n'y a t-il pas moyen de forcer Java à accepter un certificat auto-signé?

    Merci d'avance

  6. #6
    Membre expérimenté Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Points : 1 622
    Points
    1 622
    Par défaut
    Il est clair que ton certificat n'est pas fait pour signer du code. Ducoup je me pose la question de comment as tu obtenu ce certificat ?

    Je viens de refaire un petit test et chez moi je n'ai aucun soucis pour signer que ce soit avec un certificat .jks ou .p12 auto-signé.

    Après je fais l'opération à la main et donc peut être que Maven à avoir quelque chose la dessus (même si j'en doute au vu de la pile d'erreur). Mais étant complètement novice avec Maven, je laisse le soin à d'autres d'argumenter la dessus.

  7. #7
    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
    Tu peux toujours généré un autosigné, cf les docs chez oracle à ce sujet. Maintenant, pour passer en production, il faudra acheter un certificat valide.

    Tu peux force d'accepter un autosigné en rajoutant des exceptions pour ton site dans les securités java, je pense. Mais c'est donc évidement à faire sur chaque poste client qui va utiliser ton application

    @Nico02 le plugin maven n'est qu'un wrapper autour de jarsign, il ne fait rien de spécial autre que choisir les noms de ficheir et permettre la configuration dans le pom.xml

Discussions similaires

  1. [CFT] probléme de certificat auto-signé
    Par mounir81 dans le forum Protocoles
    Réponses: 0
    Dernier message: 27/03/2014, 13h58
  2. Réponses: 1
    Dernier message: 16/05/2010, 11h12
  3. Récuperer un certificat auto-signé
    Par zaventem dans le forum VBA Word
    Réponses: 1
    Dernier message: 25/09/2009, 13h57
  4. utilisation de keystore - keytool pour certificat auto-signé
    Par turican2 dans le forum Débuter avec Java
    Réponses: 13
    Dernier message: 04/07/2009, 13h56
  5. Prism et https avec certificat auto signé
    Par wodel dans le forum Applications et environnements graphiques
    Réponses: 0
    Dernier message: 23/03/2008, 10h46

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