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) |
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
Comportements du script request
Règles de conception pour les scripts 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
Comportements des scripts d'action de classe
Règles de conception des scripts d'action de classe
Rédaction de scripts d'action de classe
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 d'un package non signé au format répertoire
4. Vérification et transfert d'un package
5. Création d'un package : Etudes de cas
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é.
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 :
Le package provient de l'entité qui l'a signé
L'entité l'a en effet signé
Le package n'a pas été modifié depuis que l'entité l'a signé
L'entité qui l'a signé est une entité de confiance
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 :
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 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).
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.
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.
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 :
|
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.
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.
La procédure de création de packages signés se déroule en trois étapes :
Création d'un package non signé au format répertoire.
Importation du certificat de signature, des certificats AC et de la clé privée dans le keystore de package.
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.
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.
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
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
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
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.
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é.
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>
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
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.
Par exemple, en partant des exemples des procédures précédentes, vous devez saisir la commande suivante pour créer un package signé appelé SUNWfoo.signed :
$ pkgtrans -g -k ~/mykeystore -n mycert . ./SUNWfoo.signed SUNWfoo
Le résultat de cette commande peut être comme suit :
Retrieving signing certificates from keystore </home/user/mykeystore> Enter keystore password: Generating digital signature for signer <Test User> Transferring <SUNWfoot> package instance
Le package signé est créé dans le fichier SUNWfoo.signed, au format flux de données de package. Ce package signé peut être copié sur un site Web et, installé à l'aide de la commande pkgadd et d'une URL.