Frequently Asked Questions

Other Languages: Dansk Deutsch Ελληνικά English Español Suomi Italiano Bokmål Nederlands Polski Português - Brasil Português - Portugal Русский Svenska Türkçe Українська Chinese Taiwan Chinese

Signature De Code Java : Générer Un CSR

Print this Article
Last Updated: February 2, 2015 12:50 PM

Depuis janvier 2014, toutes les applications Java qui s'exécutent dans les navigateurs Web exigent un certificat de signature de code. Après avoir acheté un certificat de signature de code, vous devez signer votre code Java.

Plusieurs outils sont nécessaires pour finaliser et signer du code Java, dont keytool, jar et jarsigner. À partir du JDK 5.0, jarsigner peut générer des signatures avec horodatage, ce qui permet de garantir que le fichier JAR a été signé à une date où le certificat de signature de code était encore valide.

Solution 1 - Demander un nouveau certificat de signature de code

  1. Si nécessaire, téléchargez le kit JDK à l'aide du lien suivant :
    http://java.sun.com/javase/downloads/index.jsp
  2. Demander un certificat de signature de code à Starfield Technologies.
    • Créez un nouveau keystore. Un "keystore" (littéralement, "zone de stockage des clés") est emplacement dans lequel le système stocke les certificats sécurisés par clé privée. L'exemple ci-dessous génère un keystore personnalisé nommé "codesignstore" et qui devra être utilisé exclusivement pour un certificat de signature de code donné et pour la clé privée associée à ce certificat.
      keytool -genkey -alias codesigncert -keypass -keyalg RSA -keysize 2048 -dname "CN=displayname,O=companyname,C=US,ST=state,L=city" -keystore codesignstore -storepass
    • Créer une demande de signature de certificat (CSR). Une clé privée sera générée et stockée dans le keystore nommé "codesignstore". Un fichier CSR nommé "mycsr.pem" sera généré dans le répertoire de travail actuel.
      keytool -certreq -v -alias codesigncert -file mycsr.pem -keystore codesignstore
    • Acheter un certificat de signature de code.
    • Dans "Mon compte", cliquez sur le crédit de certificat de signature de code que vous avez acheté : le système lance l'application Web Starfield Secure Certificate Services Account Management (gestion sécurisée des certificats). Pour faire apparaître le champ CSR, la méthode de génération des demandes CSR doit avoir la valeur "Manuelle" dans le formulaire de demande.
    • Soumettre une demande CSR dans le cadre d'une demande de signature de code.
      • Après avoir ouvert le fichier "mycsr.pem" dans un éditeur de texte, copiez le contenu entier du fichier (y compris les lignes contenant les mentions "BEGIN NEW CERTIFICATE REQUEST" et "END NEW CERTIFICATE REQUEST") et collez-le dans la section appropriée du formulaire de demande de signature de code.
    • Les informations de société que vous communiquez feront l'objet d'une vérification. Si nécessaire, l'autorité d'enregistrement (RA) vous contactera pour obtenir des des renseignements complémentaires.
    • Lorsque le certificat de signature de code est émis, vous recevez un mail contenant un lien pour le téléchargement du fichier de certificat (et, le cas échéant du ou des certificats intermédiaires associés).
  3. Installez le certificat de signature de code dans le keystore créé précédemment. L'exemple suivant prépare un fichier de certificat de signature de code qui sera nommé "mycert.cer". Ce fichier de certificat sera stocké dans le dossier de travail actuel, au format PKCS#7.
    keytool -import -trustcacerts -keystore codesignstore -storepass -alias codesigncert -file mycert.cer
  4. Signez le fichier JAR à l'aide de jarsigner et en utilisant le certificat de signature de code et la clé privée :
    jarsigner -verbose -keystore codesignstore -storepass -keypass myapp.jar codesigncert
    • "codesignstore" est l'alias associé au keystore qui contient le certificat de signature de code, la clé privée et tous les autres certificats de la chaîne considérée.
    • Le nom du fichier d'entrée non signé est "myapp.jar". Ce nom sera remplacé par la version signée du fichier. Utilisez l'option en ligne de commande "signedjar" (sans les guillemets) pour spécifier des noms distincts de fichier d'entrée et de fichier de sortie.
    • 'codesigncert' est l'alias associé à la clé privée stockée dans le keystore.
    L'exemple suivant reprend l'exemple présenté ci-dessus et ajoute les options d'horodatage ("tsa").
    jarsigner -verbose -keystore codesignstore -storepass -keypass -tsa http://tsa.starfieldtech.com/ myapp.jar codesigncert
  5. Vérifiez le fichier JAR signé :
    jarsigner -verify -verbose -certs myapp.jar
  6. Distribuer le code

Solution 2 - Utilisez le fichier PKCS#12 existant (contient à la fois le certificat de signature de code et la clé privée)

  1. Si nécessaire, téléchargez le kit JDK à l'aide du lien suivant :
    http://java.sun.com/javase/downloads/index.jsp
  2. Vérifiez que le fichier PFX/P12 peut être utilisé avec jarsigner. Exécutez la commande suivante (l'alias requis à l'étape 5 s'affiche au début de la sortie) :
    keytool -list -storetype pkcs12 -keystore mycert.pfx -v
  3. À l'aide de l'outil jar, créez un fichier JAR à partir des fichiers de classe Java, soit :
    jar cvf myapp.jar myapp.class
  4. Signez le fichier JAR à l'aide de jarsigner et en utilisant le code de signature de certificat et la clé privée :
    jarsigner -storetype pkcs12 -keystore mycert.pfx myapp.jar "aliasname"
    • "mycert.pfx" spécifie le chemin d'accès complet du fichier PFX/P12 (qui contient le code de signature de certificat et la clé privée). Ce fichier doit également contenir le ou les certificats intermédiaires.
    • "aliasname" s'affiche au début de la sortie de l'étape 2. Si le fichier PFX/P12 a été exporté à partir de Windows, son alias sera un identifiant de type GUID.
    • Lorsqu'un message vous y invite, entrez le mot de passe associé à la clé privée stockée dans le fichier PFX/P12. Vous pouvez également inclure l'option "-storepass" en ligne de commande (pour spécifier le mot de passe).
    • Le nom du fichier d'entrée non signé est "myapp.jar". Ce nom sera remplacé par la version signée du fichier. Utilisez l'option en ligne de commande "signedjar" (sans les guillemets) pour spécifier des noms distincts de fichier d'entrée et de fichier de sortie.
    L'exemple suivant reprend l'exemple présenté ci-dessus et ajoute les options d'horodatage ("tsa").
    jarsigner -storetype pkcs12 -keystore mycert.pfx -tsa http://tsa.starfieldtech.com/ myapp.jar "aliasname"
  5. Vérifiez le fichier JAR signé :
    jarsigner -verify -verbose -certs myapp.jar
  6. Distribuer le code

Liens