JavaScript is required to for searching.
Ignorer les liens de navigation
Quitter l'aperu
Guide du développeur de l'empaquetage d'applications     Oracle Solaris 10 1/13 Information Library (Français)
search filter icon
search icon

Informations document

Préface

1.  Conception d'un package

2.  Création d'un package

3.  Amélioration de la fonctionnalité d'un package (opérations)

Création de fichiers d'information et de scripts d'installation (liste de tâches)

Création de fichiers d'information

Définition des dépendances d'un package

Définition des dépendances d'un package

Rédaction d'un message de copyright

Rédaction d'un message de copyright

Réservation d'espace supplémentaire sur un système cible

Réservation d'espace supplémentaire sur un système cible

Création de scripts d'installation

Traitement des scripts pendant l'installation d'un package

Traitement des scripts pendant la suppression d'un package

Variables d'environnement de package mises à la disposition des scripts

Obtention d'informations sur un package pour un script

Codes de sortie des scripts

Rédaction d'un script request

Comportements du script request

Règles de conception pour les scripts request

Rédaction d'un script request

Recueil de données d'un système de fichiers à l'aide du script checkinstall

Comportements du script checkinstall

Règles de conception pour les scripts checkinstall

Recueil de données d'un système de fichiers

Rédaction de scripts de procédure

Comportements des scripts de procédure

Règles de conception des scripts de procédure

Rédaction de scripts de procédure

Rédaction de scripts d'action de classe

Définition de classes d'objets

Traitement des classes pendant l'installation d'un package

Traitement des classes pendant la suppression d'un package

Script d'action de classe

Comportements des scripts d'action de classe

Règles de conception des scripts d'action de classe

Classes système spéciales

Script de classe sed

Script de classe awk

Script de classe build

Script de classe preserve

Script de classe manifest

Rédaction de scripts d'action de classe

Création de packages signés

Packages signés

Gestion de certificats

Ajout de certificats de confiance au keystore de package

Ajout d'un certificat utilisateur et d'une clé privée au keystore de package

Vérification du keystore de package

Suppression de certificats de confiance et de clés privées du keystore d'un package

Création de packages signés

Création d'un package non signé au format répertoire

Importation des certificats dans le keystore de package

Signature du package

4.  Vérification et transfert d'un package

5.  Création d'un package : Etudes de cas

6.  Techniques avancées de création de packages

Glossaire

Index

Création de packages signés

La procédure de création de packages signés implique un certain nombre d'étapes et nécessite la compréhension de nouveaux concepts et d'une nouvelle terminologie. Cette section fournit des informations sur les packages signés, la terminologie correspondante et des informations sur la gestion des certificats. Elle fournit également des procédures détaillées relatives à la création d'un package signé.

Packages signés

Un package signé est un package au format flux de données standard contenant une signature numérique (signature numérique PKCS7 au chiffrement PEM définie ci-après) qui garantit les points suivants :

La seule différence entre un package signé et un package non signé est sa signature. Un package signé est compatible binaire avec un package non signé. De ce fait, un package signé peut être utilisé avec d'anciennes versions d'outils d'empaquetage. Toutefois, la signature est dans ce cas ignorée.

La technologie d'empaquetage signé emploie une nouvelle terminologie et de nouvelles abréviations décrites dans le tableau suivant :

Terme
Définition
ASN.1
Langage de description de syntaxe abstraite (numéro 1) : Méthode d'expression d'objets abstraits. Par exemple, le langage ASN.1 définit un certificat à clé publique, l'ensemble des objets composant le certificat, et l'ordre dans lequel les objets sont recueillis. Toutefois, le langage ASN.1 n'indique pas la manière dont les objets sont sérialisés à des fins de stockage ou de transmission.
X.509
Norme X.509 de l'UIT-T : Spécifie la syntaxe X.509 très répandue des certificats à clés publiques.
DER
Distinguished Encoding Rules : Représentation binaire d'un objet ASN.1 qui définit la manière dont un objet ASN.1 est sérialisé à des fins de stockage ou de transmission dans les environnements informatiques.
PEM
Privacy Enhanced Message : Technique de chiffrement de fichier (au format DER ou autre format binaire) utilisant le codage 64 de base et quelques en-têtes facultatifs. La technique PEM était à l'origine utilisée pour le chiffrement d'e-mails de type MIME. La technique PEM est également largement utilisée pour le chiffrement des certificats et des clés privées d'un fichier stocké sur un système de fichiers ou joint à un message électronique.
PKCS7
Norme de chiffrement par clé publique numéro 7 : Norme décrivant la syntaxe générale des données qu'il est possible de chiffrer, notamment les signatures numériques et les enveloppes numériques. Un package signé contient une signature PKCS7 incorporée. Cette signature contient au minimum la synthèse du package chiffré, ainsi que le certificat à clés publiques X.509 du signataire. Le package signé peut également contenir des certificats à chaînes. Les certificats à chaînes peuvent être utilisés lors de la formation d'une chaîne de confiance, du certificat du signataire à un certificat de confiance stocké localement.
PKCS12
Norme de chiffrement par clé publique numéro 12 : Norme décrivant la syntaxe du stockage d'objets cryptographiques sur disque. Le keystore de package utilise ce format.
Keystore de package
Référentiel de certificats et de clés pouvant être interrogé par les outils de gestion des packages.

Gestion de certificats

Avant de créer un package signé, vous devez disposer d'un keystore de package. Ce keystore de package contient des certificats sous la forme d'objets. Un keystore de package contient deux types d'objets :

Certificat de confiance

Certificat de confiance contenant un seul certificat à clé publique appartenant à une autre entité. Le certificat de confiance est nommé ainsi parce que le propriétaire du keystore espère que la clé publique contenue dans le certificat appartient en effet à l'entité indiquée par le sujet (propriétaire) du certificat. L'émetteur du certificat garantit cette confiance en signant le certificat.

Les certificats de confiance sont utilisés lors de la vérification des signatures et lors de l'initialisation d'une connexion à un serveur sécurisé (SSL).

Clé utilisateur

Une clé utilisateur renferme toutes les informations sensibles de la clé cryptographique. Ces informations sont stockées dans un format protégé pour empêcher tout accès non autorisé. Une clé utilisateur se compose de la clé privée d'un utilisateur et du certificat à clé publique correspondant à la clé privée.

Les clés utilisateur sont utilisées dans le cadre de la création d'un package signé.

Par défaut, le keystore de package est stocké dans le répertoire /var/sadm/security. Les utilisateurs peuvent disposer de leur propre keystore stocké par défaut dans le répertoire $HOME/.pkg/security.

Sur disque, un keystore de package peut utiliser deux formats : un format multifichier et un format monofichier. Un format multifichier stocke ses objets dans plusieurs fichiers. Chaque type d'objet est stocké dans un fichier distinct. Tous ces fichiers doivent être chiffrés à l'aide de la même phrase de passe. Un keystore monofichier stocke tous ses objets dans un seul fichier dans le système de fichiers.

Le principal utilitaire servant à gérer les certificats et le keystore de package est la commande pkgadm. Les sous-sections suivantes décrivent les opérations de gestion du keystore de package les plus courantes.

Ajout de certificats de confiance au keystore de package

Vous pouvez ajouter un certificat de confiance au keystore de package à l'aide de la commande pkgadm. Le certificat peut être au format PEM ou DER. Par exemple :

$ pkgadm addcert -t /tmp/mytrustedcert.pem

Dans cet exemple, le certificat au format PEM nommé mytrustedcert.pem est ajouté au keystore de package.

Ajout d'un certificat utilisateur et d'une clé privée au keystore de package

La commande pkgadm ne génère pas de certificats utilisateur ni de clés privées. Les certificats utilisateur et les clés privées sont en général obtenus auprès d'une autorité de certification telle que Verisign. Ils sont aussi générés localement en tant que certificat autosigné. Une fois la clé et le certificat obtenus, vous pouvez les importer dans le keystore de package à l'aide de la commande pkgadm. Par exemple :

pkgadm addcert -n myname -e /tmp/myprivkey.pem /tmp/mypubcert.pem

Dans cet exemple, les options suivantes sont utilisées :

-n myname
Identifie l'entité (myname) du keystore de package sur laquelle opérer. L'entité myname devient l'alias sous lequel les objets sont stockés.
-e /tmp/myprivkey.pem
Spécifie le fichier contenant la clé privée. Dans ce cas, le fichier est myprivkey.pem, stocké dans le répertoire /tmp.
/tmp/mypubcert.pem
Indique le fichier de certificat au format PEM appelé mypubcert.pem.

Vérification du keystore de package

La commande pkgadm sert également à afficher le contenu du keystore de package. Par exemple :

$ pkgadm listcert

Cette commande affiche les certificats de confiance et clés privées contenus dans le keystore de package.

Suppression de certificats de confiance et de clés privées du keystore d'un package

La commande pkgadm peut être utilisée pour supprimer des certificats de confiance et des clés privées du keystore de package.

Lorsque vous supprimez des certificats utilisateur, l'alias de la paire certificat/clé doit être spécifié. Par exemple :

$ pkgadm removecert -n myname

L'alias du certificat correspond au nom usuel du certificat, qui peut être identifié à l'aide de la commande pkgadm listcert. Par exemple, la commande suivante supprime un certificat de confiance appelé Trusted CA Cert 1 :

$ pkgadm removecert -n "Trusted CA Cert 1"

Remarque - Si un certificat de confiance et un certificat utilisateur sont stockés sous le même nom d'alias, ils sont tous deux supprimés lorsque vous spécifiez l'option -n.


Création de packages signés

La procédure de création de packages signés se déroule en trois étapes :

  1. Création d'un package non signé au format répertoire.

  2. Importation du certificat de signature, des certificats AC et de la clé privée dans le keystore de package.

  3. Signature du package de l'étape 1 avec les certificats de l'étape 2.


Remarque - Les outils d'empaquetage ne créent pas de certificats. Ces certificats doivent être obtenus auprès d'une autorité de certification telle que Verisign ou Thawte.


Chaque étape de la création de packages signés est décrite dans les procédures suivantes.

Création d'un package non signé au format répertoire

La procédure de création d'un package non signé au format répertoire est identique à la procédure de création d'un package standard décrite précédemment dans ce manuel. La procédure suivante décrit les étapes de la création d'un package non signé au format répertoire. Pour plus d'informations, reportez-vous aux sections précédentes relatives à la création des packages.

  1. Créez le fichier pkginfo.

    Le fichier pkginfo doit avoir le contenu de base suivant :

    PKG=SUNWfoo
    BASEDIR=/
    NAME=My Test Package
    ARCH=sparc
    VERSION=1.0.0
    CATEGORY=application
  2. Créez le fichier prototype.

    Le fichier prototype doit avoir le contenu de base suivant :

    $cat prototype
    i pkginfo
    d none usr 0755 root sys
    d none usr/bin 0755 root bin
    f none usr/bin/myapp=/tmp/myroot/usr/bin/myapp 0644 root bin
  3. Répertoriez le contenu du répertoire source des objets.

    Par exemple :

    $ ls -lR /tmp/myroot

    Le résultat pourrait être comme suit :

    /tmp/myroot:
    total 16
    drwxr-xr-x   3 abc      other        177 Jun  2 16:19 usr
    
    /tmp/myroot/usr:
    total 16
    drwxr-xr-x   2 abc      other        179 Jun  2 16:19 bin
    
    /tmp/myroot/usr/bin:
    total 16
    -rw-------   1 abc      other       1024 Jun  2 16:19 myapp
  4. Créez le package non signé.
    pkgmk -d `pwd`

    Le résultat peut être comme suit :

    ## Building pkgmap from package prototype file.
    ## Processing pkginfo file.
    WARNING: parameter <PSTAMP> set to "syrinx20030605115507"
    WARNING: parameter <CLASSES> set to "none"
    ## Attempting to volumize 3 entries in pkgmap.
    part  1 -- 84 blocks, 7 entries
    ## Packaging one part.
    /tmp/SUNWfoo/pkgmap
    /tmp/SUNWfoo/pkginfo
    /tmp/SUNWfoo/reloc/usr/bin/myapp
    ## Validating control scripts.
    ## Packaging complete.

    Le package se trouve dorénavant dans le répertoire actuel.

Importation des certificats dans le keystore de package

Le certificat et la clé privée à importer doivent être un certificat X.509 et une clé privée chiffrés au format PEM ou DER. En outre, tout certificat intermédiaire ou à chaînes liant votre certificat de signature à l'autorité de certification doit être importé dans le keystore de package avant la signature d'un package.


Remarque - Chaque autorité de certification peut établir des certificats dans divers formats. Pour extraire les certificats et la clé privée du fichier PKCS12 et les importer dans le fichier X.509 chiffré au format PEM (approprié à l'importation dans le keystore de package), servez-vous d'un utilitaire de conversion en freeware tel que OpenSSL.


Si votre clé privée est chiffrée (ce qui est habituellement le cas), un message vous invite à saisir la phrase de passe. Un autre message vous invite par ailleurs à saisir un mot de passe afin de protéger le keystore de package résultant. Ce mot de passe n'est pas obligatoire mais sans mot de passe, le keystore de package n'est pas chiffré.

La procédure suivante décrit l'importation des certificats à l'aide de la commande pkgadm une fois convertis au format approprié.

  1. Importez tous les certificats fournis par l'autorité de certification situés dans votre fichier de certificats X.509 chiffrés au format PEM ou DER.

    Par exemple, pour importer tous les certificats de l'autorité de certification situés dans le fichier ca.pem, vous devez saisir la commande suivante :

    $ pkgadm addcert -k ~/mykeystore -ty ca.pem

    Le résultat peut être comme suit :

    Trusting certificate <VeriSign Class 1 CA Individual \
    Subscriber-Persona Not Validated>
    Trusting certificate </C=US/O=VeriSign, Inc./OU=Class 1 Public \
    Primary Certification Authority
    Type a Keystore protection Password.
    Press ENTER for no protection password (not recommended): 
    For Verification: Type a Keystore protection Password.
    Press ENTER for no protection password (not recommended): 
    Certificate(s) from <ca.pem> are now trusted

    Pour importer votre clé de signature dans le keystore de package, vous devez fournir un alias qui sera utilisé ultérieurement lors de la signature du package. Cet alias peut également être utilisé pour supprimer la clé du keystore de package.

    Par exemple, pour importer votre clé de signature à partir du fichier sign.pem, vous devez saisir la commande suivante :

    $ pkgadm addcert -k ~/mykeystore -n mycert sign.pem

    Le résultat peut être comme suit :

    Enter PEM passphrase:
    Enter Keystore Password: 
    Successfully added Certificate <sign.pem> with alias <mycert>
  2. Vérifiez que les certificats se trouvent dans le keystore de package.

    Par exemple, pour afficher les certificats contenus dans le keystore créé à l'étape précédente, vous devez saisir la commande suivante :

    $ pkgadm listcert -k ~/mykeystore

Signature du package

Une fois les certificats importés dans le keystore de package, le package peut être signé. La signature du package en tant que telle s'effectue à l'aide de la commande pkgtrans.