Ignorer les liens de navigation | |
Quitter l'aperu | |
Administration d'Oracle Solaris : services de sécurité Oracle Solaris 11 Information Library (Français) |
Partie I Présentation de la sécurité
1. Services de sécurité (présentation)
Partie II Sécurité du système, des fichiers et des périphériques
2. Gestion de la sécurité de la machine (présentation)
3. Contrôle de l'accès aux systèmes (tâches)
4. Service d'analyse antivirus (tâches)
5. Contrôle de l'accès aux périphériques (tâches)
6. Utilisation de l'outil de génération de rapports d'audit de base (tâches)
7. Contrôle de l'accès aux fichiers (tâches)
Partie III Rôles, profils de droits et privilèges
8. Utilisation des rôles et des privilèges (présentation)
9. Utilisation du contrôle d'accès basé sur les rôles (tâches)
10. Attributs de sécurité dans Oracle Solaris (référence)
Partie IV Services cryptographiques
11. Structure cryptographique (présentation)
12. Structure cryptographique (tâches)
13. Structure de gestion des clés
Gestion des technologies à clé publique
Utilitaires de la structure de gestion des clés
Utilisation de la structure de gestion des clés (tâches)
Utilisation de la structure de gestion des clés (liste des tâches)
Procédure de création d'un certificat à l'aide de la commande pktool gencert
Procédure d'importation d'un certificat dans votre keystore
Procédure d'exportation d'un certificat et de la clé privée au format PKCS #12
Procédure de génération d'une phrase de passe à l'aide de la commande pktool setpin
Procédure de génération d'une paire de clés à l'aide de la commande pktool genkeypair
Procédure de signature d'une demande de certificat à l'aide de la commande pktool signcsr
Partie V Services d'authentification et communication sécurisée
14. Authentification des services réseau (tâches)
17. Utilisation de Secure Shell (tâches)
19. Introduction au service Kerberos
20. Planification du service Kerberos
21. Configuration du service Kerberos (tâches)
22. Messages d'erreur et dépannage de Kerberos
23. Administration des principaux et des stratégies Kerberos (tâches)
24. Utilisation des applications Kerberos (tâches)
25. Service Kerberos (référence)
Partie VII Audit dans Oracle Solaris
Cette section décrit l'utilisation de la commande pktool pour gérer vos objets de clé publique, tels que des mots et phrases de passe, des fichiers, des keystores, des certificats et des CRL.
La structure de gestion des clés (KMF) vous permet de gérer de manière centralisée les technologies à clé publique.
|
Cette procédure crée un certificat autosigné et le stocke dans le keystore PKCS #11. Dans le cadre de cette opération, une paire de clés publique et privée RSA est également créée. La clé privée est stockée dans le keystore avec le certificat.
% pktool gencert [keystore=keystore] label=label-name \ subject=subject-DN serial=hex-serial-number
Spécifie le keystore par type d'objet de clé publique. La valeur peut être nss, pkcs11 ou ssl. Ce mot de passe est facultatif.
Spécifie un nom unique donné au certificat par l'émetteur.
Spécifie le nom distinctif du certificat.
Spécifie le numéro de série au format hexadécimal. L'émetteur du certificat choisit ce nombre, comme par exemple 0x0102030405.
% pktool list Found number certificates. 1. (X.509 certificate) Label: label-name ID: Fingerprint that binds certificate to private key Subject: subject-DN Issuer: distinguished-name Serial: hex-serial-number n. ...
Cette commande répertorie tous les certificats dans le keystore. Dans l'exemple suivant, le keystore ne contient qu'un seul certificat.
Exemple 13-1 Création d'un certificat autosigné à l'aide de pktool
Dans l'exemple suivant, un utilisateur à My Company crée un certificat autosigné et le stocke dans un keystore pour les objets PKCS #11. Le keystore est initialement vide. Si le keystore n'a pas été initialisé, le code PIN pour le softtoken est changeme.
% pktool gencert keystore=pkcs11 label="My Cert" \ subject="C=US, O=My Company, OU=Security Engineering Group, CN=MyCA" \ serial=0x000000001 Enter pin for Sun Software PKCS#11 softtoken:Type PIN for token
% pktool list Found 1 certificates. 1. (X.509 certificate) Label: My Cert ID: 12:82:17:5f:80:78:eb:44:8b:98:e3:3c:11:c0:32:5e:b6:4c:ea:eb Subject: C=US, O=My Company, OU=Security Engineering Group, CN=MyCA Issuer: C=US, O=My Company, OU=Security Engineering Group, CN=MyCA Serial: 0x01
Cette procédure explique comment importer un fichier contenant des informations PKI codé avec PEM ou DER raw dans votre keystore. Pour connaître la procédure d'exportation, reportez-vous à l'Exemple 13-4.
% pktool import keystore=keystore infile=infile-name label=label-name
Si vous importez des informations PKI privées, tels qu'un fichier d'exportation au format PKCS #12, le fichier nécessite un mot de passe. Le créateur du fichier que vous importez vous fournit le mot de passe PKCS #12.
Enter password to use for accessing the PKCS12 file:Type PKCS #12 password
Enter pin for Sun Software PKCS#11 softtoken: Type PIN for token
% pktool list Found number certificates. 1. (X.509 certificate) Label: label-name ID: Fingerprint that binds certificate to private key Subject: subject-DN Issuer: distinguished-name Serial: hex-serial-number 2. ...
Exemple 13-2 Importation d'un fichier PKCS #12 dans votre keystore
Dans l'exemple suivant, l'utilisateur importe un fichier PKCS #12 d'un tiers. La commande pktool import extrait la clé privée et le certificat du fichier gracedata.p12 et les stocke dans le keystore préféré de l'utilisateur.
% pktool import keystore=pkcs11 infile=gracedata.p12 label=GraceCert Enter password to use for accessing the PKCS12 file:Type PKCS #12 password Enter pin for Sun Software PKCS#11 softtoken: Type PIN for token Found 1 certificate(s) and 1 key(s) in gracedata.p12 % pktool list Found 1 certificates. 1. (X.509 certificate) Label: GraceCert ID: 12:82:17:5f:80:78:eb:44:8b:98:e3:3c:11:c0:32:5e:b6:4c:ea:eb Subject: C=US, O=My Company, OU=Security Engineering Group, CN=MyCA Issuer: C=US, O=My Company, OU=Security Engineering Group, CN=MyCA Serial: 0x01
Exemple 13-3 Importation d'un certificat X.509 dans votre keystore
Dans l'exemple suivant, l'utilisateur importe un certificat X.509 au format PEM dans le keystore préféré de l'utilisateur. Ce certificat public n'est pas protégé par un mot de passe. Le keystore public de l'utilisateur n'est pas protégé par un mot de passe non plus.
% pktool import keystore=pkcs11 infile=somecert.pem label="TheirCompany Root Cert" % pktool list Found 1 certificates. 1. (X.509 certificate) Label: TheirCompany Root Cert ID: 21:ae:83:98:24:d1:1f:cb:65:5b:48:75:7d:02:47:cf:98:1f:ec:a0 Subject: C=US, O=TheirCompany, OU=Security, CN=TheirCompany Root CA Issuer: C=US, O=TheirCompany, OU=Security, CN=TheirCompany Root CA Serial: 0x01
Vous pouvez créer un fichier au format PKCS #12 afin d'exporter des clés privées et leur certificat X.509 associé vers d'autres systèmes. L'accès au fichier est protégé par un mot de passe.
% pktool list Found number certificates. 1. (X.509 certificate) Label: label-name ID: Fingerprint that binds certificate to private key Subject: subject-DN Issuer: distinguished-name Serial: hex-serial-number 2. ...
Utilisez le keystore et l'étiquette de la commande pktool list. Donnez un nom au fichier d'exportation. Si le nom contient un espace, mettez le nom entre guillemets.
% pktool export keystore=keystore outfile=outfile-name label=label-name
A l'invite, entrez le mot de passe courant du keystore. A ce stade, vous créez un mot de passe pour le fichier d'exportation. Le destinataire doit fournir ce mot de passe lors de l'importation du fichier.
Enter pin for Sun Software PKCS#11 softtoken: Type PIN for token Enter password to use for accessing the PKCS12 file:Create PKCS #12 password
Astuce - Envoyez le mot de passe séparément du fichier d'exportation. Les pratiques recommandées suggèrent que vous fournissiez le mot de passe hors bande, par exemple lors d'un appel téléphonique.
Exemple 13-4 Exportation d'un certificat et de la clé privée au format PKCS #12
Dans l'exemple suivant, un utilisateur exporte les clés privées avec leur certificat X.509 associé dans un fichier PKCS #12 normal. Ce fichier peut être importé dans d'autres keystores. Le mot de passe PKCS #11 protège le keystore source. Le mot de passe PKCS #12 est utilisé pour protéger des données privées dans le fichier PKCS #12. Ce mot de passe est requis pour importer le fichier.
% pktool list Found 1 certificates. 1. (X.509 certificate) Label: My Cert ID: 12:82:17:5f:80:78:eb:44:8b:98:e3:3c:11:c0:32:5e:b6:4c:ea:eb Subject: C=US, O=My Company, OU=Security Engineering Group, CN=MyCA Issuer: C=US, O=My Company, OU=Security Engineering Group, CN=MyCA Serial: 0x01
% pktool export keystore=pkcs11 outfile=mydata.p12 label="My Cert" Enter pin for Sun Software PKCS#11 softtoken: Type PIN for token Enter password to use for accessing the PKCS12 file:Create PKCS #12 password
L'utilisateur appelle ensuite le destinataire par téléphone pour lui fournir le mot de passe PKCS #12.
Vous pouvez générer une phrase de passe pour un objet dans un keystore et pour le keystore lui-même. La phrase de passe est nécessaire pour accéder à l'objet ou au keystore. Pour un exemple de génération d'une phrase de passe pour un objet dans un keystore, reportez-vous à l'Exemple 13-4.
% pktool setpin keystore=nss|pkcs11 dir=directory
Si aucun mot de passe n'est encore défini pour le keystore, appuyez sur la touche Entrée pour créer le mot de passe.
Enter current token passphrase:Press the Return key Create new passphrase:Type the passphrase that you want to use Re-enter new passphrase:Retype the passphrase Passphrase changed.
Le keystore est maintenant protégé par une passphrase. Si vous perdez la phrase de passe, vous perdez l'accès aux objets dans le keystore.
Exemple 13-5 Protection d'un keystore par une phrase de passe
L'exemple suivant montre comment définir la phrase de passe pour une base de données NSS. Comme aucune phrase de passe n'a été créée, l'utilisateur appuie sur la touche Entrée à la première invite.
% pktool setpin keystore=nss dir=/var/nss Enter current token passphrase:Press the Return key Create new passphrase: has8n0NdaH Re-enter new passphrase: has8n0NdaH Passphrase changed.
Certaines applications exigent une paire de clés publique/privée. Dans cette procédure, vous créez ces paires de clés et les stockez.
Choisissez l'une des méthodes suivantes.
Les clés basées sur des fichiers sont créées pour les applications qui lisent les clés directement à partir de fichiers sur le disque. En règle générale, les applications qui utilisent directement les bibliothèques de chiffrement OpenSSL requièrent le stockage des clés et des certificats pour l'application dans des fichiers.
Remarque - Le keystore file ne prend pas en charge les clés et les certificats de courbes elliptiques (ec) .
% pktool genkeypair keystore=file outkey=key-filename \ [format=der|pem] [keytype=rsa|dsa] [keylen=key-size]
La valeur file spécifie le type de fichier dans l'emplacement de stockage de la clé.
Spécifie le nom du fichier de stockage de la paire de clés.
Spécifie le format de codage de la paire de clés. La sortie der est binaire et la sortie pem est ASCII.
Spécifie le type de paire de clés qui peut être stockée dans un keystore file. Pour obtenir des définitions, reportez-vous à DSA et RSA.
Spécifie la longueur de la clé en bits. Le nombre doit être divisible par 8. Pour déterminer les tailles de clés possibles, utilisez la commande cryptoadm list -vm.
Vous devez effectuer l'Étape 1 avant d'utiliser cette méthode.
Le keystore PKCS #11 permet de stocker des objets sur un périphérique matériel. Le périphérique peut être une carte Sun Crypto Accelerator 6000, un périphérique TPM (Trusted Platform Module, module de plate-forme de confiance) ou une carte à puce branchée à la structure cryptographique. PKCS #11 peut également être utilisé pour stocker des objets dans le softoken, ou jeton logiciel, qui stocke les objets dans un sous-répertoire privé sur le disque. Pour plus d'informations, reportez-vous à la page de manuel pkcs11_softtoken(5).
Vous pouvez récupérer la paire de clés dans le keystore par une étiquette que vous indiquez.
% pktool genkeypair label=key-label \ [token=token[:manuf[:serial]]] \ [keytype=rsa|dsa|ec] [curve=ECC-Curve-Name]]\ [keylen=key-size] [listcurves]
Spécifie une étiquette pour la paire de clés. La paire de clés peut être récupérée à partir du keystore par son étiquette.
Spécifie le nom du jeton. Par défaut, le nom du jeton est Sun Software PKCS#11 softtoken.
Spécifie le type de la paire de clés. Pour le type de courbe elliptique (ec), vous pouvez éventuellement spécifier le nom de la courbe. Les noms de courbes sont répertoriés en tant que sortie de l'option listcurves.
Spécifie la longueur de la clé en bits. Le nombre doit être divisible par 8.
Répertorie les noms de courbes elliptiques qui peuvent être utilisés comme valeurs de l'option curve= pour un type de clé ec.
Le keystore NSS est utilisé par les serveurs qui utilisent NSS comme interface de chiffrement principale. Par exemple, le Oracle iPlanet Web Server utilise les bases de données NSS pour stocker les objets.
Vous devez effectuer l'Étape 1 avant d'utiliser cette méthode.
% pktool keystore=nss genkeypair label=key-nickname \ [token=token[:manuf[:serial]]] \ [dir=directory-path] [prefix=database-prefix] \ [keytype=rsa|dsa|ec] [curve=ECC-Curve-Name]] \ [keylen=key-size] [listcurves]
La valeur nss spécifie le type NSS de l'emplacement de stockage de la clé.
Spécifie une étiquette pour la paire de clés. La paire de clés peut être récupérée à partir du keystore par son étiquette.
Spécifie le nom du jeton. Par défaut, le jeton est Sun Software PKCS#11 softtoken.
Spécifie le chemin d'accès au répertoire de la base de données NSS. Par défaut, directory est le répertoire courant.
Spécifie le préfixe de la base de données NSS. Par défaut, le champ de préfixe est vide.
Spécifie le type de la paire de clés. Pour le type de courbe elliptique, vous pouvez éventuellement spécifier le nom de la courbe. Les noms de courbes sont répertoriés en tant que sortie de l'option listcurves.
Spécifie la longueur de la clé en bits. Le nombre doit être divisible par 8.
Répertorie les noms de courbes elliptiques qui peuvent être utilisés comme valeurs de l'option curve= pour un type de clé ec.
Utilisez l'une des commandes suivantes, en fonction de l'emplacement où vous avez stocké la clé :
% pktool list keystore=file objtype=key infile=key-filename Found n keys. Key #1 - keytype:location (keylen)
$ pktool list objtype=key Enter PIN for keystore: Found n keys. Key #1 - keytype:location (keylen)
% pktool list keystore=nss dir=directory objtype=key
Exemple 13-6 Création d'une paire de clés à l'aide de la commande pktool
Dans l'exemple ci-dessous, un utilisateur crée un keystore PKCS #11 pour la première fois. Après avoir déterminé les tailles de clé des paires de clés RSA, l'utilisateur génère une paire de clés pour une application. Enfin, l'utilisateur vérifie que la paire de clés figure dans le keystore. L'utilisateur constate que la seconde instance de la paire de clés RSA peut être stockée sur le matériel. Etant donné que l'utilisateur ne spécifie pas un argument token, la paire de clés est stockée sous forme d'un Sun Software PKCS#11 softtoken.
# pktool setpin Create new passphrase:Easily remembered, hard-to-detect password Re-enter new passphrase:Retype password Passphrase changed. % cryptoadm list -vm | grep PAIR ... CKM_DSA_KEY_PAIR_GEN 512 1024 . . . CKM_RSA_PKCS_KEY_PAIR_GEN 256 4096 . . . ... CKM_RSA_PKCS_KEY_PAIR_GEN 512 2048 X . . ecc: CKM_EC_KEY_PAIR_GEN,CKM_ECDH1_DERIVE,CKM_ECDSA,CKM_ECDSA_SHA1 % pktool genkeypair label=specialappkeypair keytype=rsa keylen=2048 Enter PIN for Sun Software PKCS#11 softtoken :Type password % pktool list Enter PIN for Sun Software PKCS#11 softtoken :Type password Found 1 keys. Key #1 - keypair: specialappkeypair (2048 bits)
Exemple 13-7 Création d'une paire de clés qui utilise l'algorithme de courbe elliptique
Dans l'exemple suivant, un utilisateur ajoute une paire de clés de courbe elliptique (ec) dans le keystore, spécifie un nom de courbe et vérifie que la paire de clés figure dans le keystore.
% pktool genkeypair listcurves secp112r1, secp112r2, secp128r1, secp128r2, secp160k1 . . . c2pnb304w1, c2tnb359v1, c2pnb368w1, c2tnb431r1, prime192v2 prime192v3 % pktool genkeypair label=eckeypair keytype=ec curves=c2tnb431r1 % pktool list Enter PIN for Sun Software PKCS#11 softtoken :Type password Found 2 keys. Key #1 - keypair: specialappkeypair (2048 bits) Key #2 - keypair: eckeypair (c2tnb431r1)
Cette procédure est utilisée pour signer une CSR (demande de signature du certificat ) PKCS #10. La CSR peut être au format PEM ou DER. Le processus de signature émet un certificat X.509 v3. Pour générer une CSR PKCS #10, reportez-vous à la page de manuel pktool(1).
Avant de commencer
Vous êtes une autorité de certification (CA), vous avez reçu une CSR et elle est stockée dans un fichier.
Si vous avez stocké la clé du signataire dans un keystore PKCS #11, signkey est l'étiquette qui récupère cette clé privée.
Si vous avez stocké la clé du signataire dans un keystore NSS, signkey est le nom du fichier qui contient cette clé privée.
Spécifie le nom de fichier de la CSR.
Spécifie le numéro de série du certificat signé.
Spécifie le nom de fichier du certificat signé.
Spécifie votre nom d'émetteur CA au format DN (nom distinctif).
Pour plus d'informations sur les arguments facultatifs de la sous-commande signcsr, reportez-vous à la page de manuel pktool(1).
Par exemple, la commande suivante signe le certificat avec la clé du signataire figurant dans le référentiel PKCS #11 :
# pktool signcsr signkey=CASigningKey \ csr=fromExampleCoCSR \ serial=0x12345678 \ outcert=ExampleCoCert2010 \ issuer="O=Oracle Corporation, \ OU=Oracle Solaris Security Technology, L=Redwood City, ST=CA, C=US, \ CN=rootsign Oracle"
La commande suivante signe le certificat avec la clé du signataire figurant dans un fichier :
# pktool signcsr signkey=CASigningKey \ csr=fromExampleCoCSR \ serial=0x12345678 \ outcert=ExampleCoCert2010 \ issuer="O=Oracle Corporation, \ OU=Oracle Solaris Security Technology, L=Redwood City, ST=CA, C=US, \ CN=rootsign Oracle"
Vous pouvez utiliser des e-mails, un site web ou un autre mécanisme pour livrer le certificat au demandeur.
Par exemple, vous pouvez utiliser votre messagerie pour envoyer le fichier ExampleCoCert2010 au demandeur.
Vous identifiez votre plug-in en lui attribuant un nom de keystore. Lorsque vous ajoutez le plug-in à la KMF, le logiciel l'identifie par son nom de keystore. Le plug-in peut être défini de manière à accepter une option. Cette procédure inclut la suppression du plug-in de la KMF.
% /usr/bin/kmfcfg install keystore=keystore-name \ modulepath=path-to-plugin [option="option-string"]
où
keystore-name : spécifie un nom unique pour le keystore que vous fournissez.
path-to-plugin : spécifie le chemin d'accès complet à l'objet de bibliothèque partagée pour le plug-in KMF.
option-string : spécifie un argument facultatif de l'objet de bibliothèque partagée.
% kmfcfg list plugin keystore-name:path-to-plugin [(built-in)] | [;option=option-string]
% kmfcfg uninstall keystore=keystore-name % kmfcfg plugin list
Exemple 13-8 Appel d'un plug-in KMF avec une option
Dans l'exemple suivant, l'administrateur stocke un plug-in KMF dans un répertoire spécifique au site. Le plug-in est défini pour accepter une option debug. L'administrateur ajoute le plug-in et vérifie qu'il est installé.
# /usr/bin/kmfcfg install keystore=mykmfplug \ modulepath=/lib/security/site-modules/mykmfplug.so # kmfcfg list plugin KMF plugin information: ----------------------- pkcs11:kmf_pkcs11.so.1 (built-in) file:kmf_openssl.so.1 (built-in) nss:kmf_nss.so.1 (built-in) mykmfplug:/lib/security/site-modules/mykmfplug.so # kmfcfg modify plugin keystore=mykmfplug option="debug" # kmfcfg list plugin KMF plugin information: ----------------------- ... mykmfplug:/lib/security/site-modules/mykmfplug.so;option=debug
Le plug-in s'exécute à présent en mode de débogage.