zion - pkcs8
.rn '' }` ''' $RCSfile$$Revision$$Date$ ''' ''' $Log$ ''' .de Sh .if t .Sp .ne 5
$1
.. .de Sp .if t .5v .if n .. .de Ip .ie
(.$>=3 .ne $3 .el .ne 3
[/col][/row][/table]
.UC .if n .hy 0 .if n .na .ds C+ Cv'-.1v'h'-1p's-2+h'-1p'+s0v'.1v'h'-1p' .de CQ " put $1 in typewriter font .ft CW 'if n "c 'if t &$1c 'if n &$1c 'if n &" &$2 $3 $4 $5 $6 $7 '.ft R .. . " AM - accent mark definitions .bd B 3 . " fudge factors for nroff and troff .if n { . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ f1 . ds #] .if t { . ds #H ((1u-(\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ & . ds #] & . " simple accents for nroff and troff .if n { . ds ' & . ds ` & . ds ^ & . ds , & . ds ~ ~ . ds ? ? . ds ! ! . ds / . ds q .if t { . ds ' k:h'-(
(.wu*8/10-*(#H)''h"|
:u" . ds ` k:h'-(
(.wu*8/10-*(#H)'`h'|
:u' . ds ^ k:h'-(
(.wu*10/11-*(#H)'^h'|
:u' . ds , k:h'-(
(.wu*8/10)',h'|
:u' . ds ~ k:h'-(
(.wu-*(#H-.1m)'~h'|
:u' . ds ? s-2ch'-w'c'u*7/10'uh'*(#H'zids+2h'w'c'u*8/10' . ds ! s-2(ors+2h'-w'(or'u'v'-.8m'.v'.8m' . ds / k:h'-(
(.wu*8/10-*(#H)'z(slh'|
:u' . ds q oh'-w'o'u*8/10's-4v'.4m'z(*iv'-.4m's+4h'w'o'u*8/10' . " troff and (daisy-wheel) nroff accents .ds : k:h'-(
(.wu*8/10-*(#H+.1m+*(#F)'v'-*(#V'z.h'.2m+*(#F'.h'|
:u'v'*(#V' .ds 8 h'*(#H'(*bh'-*(#H' .ds v k:h'-(
(.wu*9/10-*(#H)'v'-*(#V'*(#[s-4vs0v'*(#V'h'|
:u'*(#] .ds _ k:h'-(
(.wu*9/10-*(#H+(*(#F*2/3))'v'-.4m'z(hyv'.4m'h'|
:u' .ds . k:h'-(
(.wu*8/10)'v'*(#V*4/10'z.v'-*(#V*4/10'h'|
:u' .ds 3 *(#[v'.2m's-2&3s0v'-.2m'*(#] .ds o k:h'-(
(.wu+w'(de'u-*(#H)/2u'v'-.3n'*(#[z(dev'.3n'h'|
:u'*(#] .ds d- h'*(#H'(pdh'-w'~'u'v'-.25m'f2(hyv'.25m'h'-*(#H' .ds D- Dk:h'-w'D'u'v'-.11m'z(hyv'.11m'h'|
:u' .ds th *(#[v'.3m's+1Is-1v'-.3m'h'-(w'I'u*2/3)'s-1os+1*(#] .ds Th *(#[s+2Is-2h'-w'I'u*3/5'v'-.3m'ov'.3m'*(#] .ds ae ah'-(w'a'u*4/10)'e .ds Ae Ah'-(w'A'u*4/10)'E .ds oe oh'-(w'o'u*4/10)'e .ds Oe Oh'-(w'O'u*4/10)'E . " corrections for vroff .if v .ds ~ k:h'-(
(.wu*9/10-*(#H)'s-2u~ds+2h'|
:u' .if v .ds ^ k:h'-(
(.wu*10/11-*(#H)'v'-.4m'^v'.4m'h'|
:u' . " for low resolution devices (crt and lpr) .if n(.H>23 .if n(.V>19 { . ds : e . ds 8 ss . ds v h'-1'o'(aa(ga' . ds _ h'-1'^ . ds . h'-1'. . ds 3 3 . ds o a . ds d- dh'-1'(ga . ds D- Dh'-1'(hy . ds th o'bp' . ds Th o'LP' . ds ae ae . ds Ae AE . ds oe oe . ds Oe OE .rm #[ #] #H #V #F C
Nom
pkcs8 - utilitaire de conversion de clé privée PKCS#8
Résumé
openssl pkcs8 [-topk8] [-inform PEM|DER] [-outform PEM|DER] [-in nomfichier] [-passin arg] [-out nomfichier] [-passout arg] [-noiter] [-nocrypt] [-nooct] [-embed] [-nsdb] [-v2 alg] [-v1 alg]
Description
La commande pkcs8 interprète les clés privées au format PKCS#8. Elle traite aussi bien le format PKCS#8 non encodé PrivateKeyInfo et EncryptedPrivateKeyInfo, avec certains algorithmes PKCS#5 (v1.5 et v2.0) et PKCS#12.
Options
"-topk8" 4
Par défaut, une clé privée s-1PKCSs0#8 est attendue à l'entrée et une clé privée au format traditionnel est écrite. Avec l'option -topk8, la situation est inversée : une clé privée au format traditionnel est lue et une clé au format s-1PKCSs0#8 sera écrite. |
"-inform s-1DERs0|s-1PEMs0" 4
Ceci spécifie le format d'entrée. Si une clé au format s-1PKCSs0#8 est attendue à l'entrée, une version encodée s-1DERs0 ou s-1PEMs0 de la clé s-1PKCSs0#8 est attendue. Autrement, une clé privée au format traditionnel encodée s-1DERs0 ou s-1PEMs0 est prise. |
"-outform s-1DERs0|s-1PEMs0" 4
Ceci spécifie le format de sortie. Les options sont interprétées de la même manière que pour l'option -inform. |
"-in nomfichier" 4
Ceci spécifie le nom du fichier d'entrée à partir duquel la clé est lue, ou l'entrée standard si cette option est omise. Si la clé est encodée, une phrase de passe sera demandée. |
"-passin arg" 4
Le fichier d'entrée source de mots de passe. Pour de plus amples informations sur le format de l' arg voir la section s-1ARGUMENTSs0 s-1DEs0 s-1MOTs0 s-1DEs0 s-1PASSEs0 d'openssl(1). |
"-out nomfichier" 4
Ceci spécifie le nom de fichier de sortie où la clé sera écrite ou la sortie standard par défaut. Si des options d'encodage sont spécifiées, alors une phrase de passe sera demandée. Le nom de fichier de sortie ne doit pas être le même que le nom de ficheir d'entrée. |
"-passout arg" 4
Le fichier de sortie source de mots de passe. Pour de plus amples informations sur le format de l' arg voir la section s-1ARGUMENTSs0 s-1DEs0 s-1MOTs0 s-1DEs0 s-1PASSEs0 d'openssl(1). |
"-nocrypt" 4
Les clés s-1PKCSs0#8 générées ou reçues en entrée sont normalement une structure s-1PKCSs0#8 EncryptedPrivateKeyInfo et utilisent un algorithme d'encodage du mot de passe approprié. Avec cette option, une structure PrivateKeyInfo claire est attendue ou générée. Cette option n'encode pas les clés privées et devrait être utilisée uniquement si c'est nécessaire. Certains programmes comme certaines versions de logiciel certifiant du code Java utilisaient des clés privées claires. |
"-nooct" 4
Cette option génère une clé privée s-1RSAs0 dans un format déprécié que certains programmes utilisent. Plus spécifiquement, une clé privée doit être entourée par un s-1OCTETs0 s-1STRINGs0 mais certains programmes incluent la structure même sans ce s-1OCTETs0 s-1STRINGs0 autour. |
"-embed" 4
Cette option génère une clé privée s-1DSAs0 dans un format déprécié que certains programmes utilisent. Plus spécifiquement, une clé privée doit être entourée par un s-1OCTETs0 s-1STRINGs0 mais certains programmes incluent la structure même sans ce s-1OCTETs0 s-1STRINGs0 autour. |
"-nsdb" 4
Cette option génère des clés s-1DSAs0 dans un format déprécié compatible avec les bases de données de clés privées Netscape. La structure PrivateKey contient une s-1SEQUENCEs0 comprenant les clés publiques et privées respectivement. |
"-v2 alg" 4
Cette option active l'utilisation des algorithmes s-1PKCSs0#5 v2.0. Habituellement les clés privées sont encodées avec un algorithme à base de mots de passe nommé pbeWithMD5AndDES-s-1CBCs0 qui utilisent un encodage s-1DESs0 à 56 bits mais c'était l'algorithme d'encodage le plus fort pris en charge par s-1PKCSs0#5 v1.5. En utilisant l'option -v2, des algorithmes s-1PKCSs0#5 v2.0 sont utilisées qui peuvent utiliser tout algorithme d'encodage comme triple s-1DESs0 à 168 bits ou encore s-1RC2s0. Toutefois peu d'implémentations supportent s-1PKCSs0#5 v2.0 à ce jour. Si vous utilisez des clés privées uniquement avec OpenSSL, ceci n'importe pas. .Sp L'argument alg est l'algorithme d'encodage à utiliser, qui peuvent être entre autres des, des3 et rc2. L'utilisation de des3 est recommandé. |
"-v1 alg" 4
Cette option spécifie l'algorithme s-1PKCSs0#5 v1.5 ou s-1PKCSs0#12 à utiliser. Une liste complète des algorithmes possibles est incluse ci-dessous. |
Notes
La version encodée PEM d'un fichier PKCS#8 utilise les en-têtes et pieds de page suivants :
.Vb 2 & -----BEGIN ENCRYPTED PRIVATE KEY----- & -----END ENCRYPTED PRIVATE KEY----- .Ve La version non encodée utilises:
.Vb 2 & -----BEGIN PRIVATE KEY----- & -----END PRIVATE KEY----- .Ve Les clés privées utilisant des algorithmes PKCS#5 v2.0 avec un nombre d'itérations élévées sont plus sûres que celle utilisant les formats traditionnels compatible SSLeay. Ainsi, si on considère importante cette sécurité supplémentaire, les clés devraient être converties.
L'encodage par défaut est de seulement 56 bits car c'est l'encodage que la plupart des implémentations récentes gèrent.
Certains logiciels utilisent des algorithmes PKCS#12 d'encodage à base de mots de passe avec des clés privées au format PKCS#8 : celles-ci sont gérées automatiquement, mais il n'existe pas d'option pour les produire.
Il est possible d'écrire des clés privées encodées au format PKCS#8 car les détails de l'encodage sont inclus au niveau ASN1 alors que le format traditionnel les inclut au niveau PEM.
Les algorithmes pkcs#5 v1.5 et pkcs#12.
Certains algorithmes peuvent être utilisés avec l'option -v1, y compris PKCS#5 v1.5 et PKCS#12. Ils sont décrit d'avantage ci-dessous.
"s-1PBEs0-s-1MD2-DESs0 s-1PBEs0-s-1MD5-DESs0" 4
Ces algorithmes sont inclus dans la spécification s-1PKCSs0#5 v1.5 originale. Ils offrent seulement 56 buts de protection comme ils utilisent le s-1DESs0 tous les deux. |
"s-1PBEs0-s-1SHA1-RC2-64s0 s-1PBEs0-s-1MD2-RC2-64s0 s-1PBEs0-s-1MD5-RC2-64s0 s-1PBEs0-s-1SHA1-DESs0" 4
Ces algorithmes ne sont pas mentionnés dans la spécification originale s-1PKCSs0#5 v1.5 mais ils utilisent le même algorithme de dérivation de la clé et sont gérés par quelques logiciels. Ils ont été cités dans s-1PKCSs0#5 v2.0 et utilisent soit un s-1RC2s0 à 64 bit soit un s-1DESs0 à 56 bit. |
"s-1PBEs0-s-1SHA1-RC4-128s0 s-1PBEs0-s-1SHA1-RC4-40s0 s-1PBEs0-s-1SHA1-3DESs0 s-1PBEs0-s-1SHA1-2DESs0 s-1PBEs0-s-1SHA1-RC2-128s0 s-1PBEs0-s-1SHA1-RC2-40s0" 4
Ces algorithmes utilisent l'algorithme d'encodage à base de mots de passe s-1PKCSs0#12 et permettent l'utilisation des algorithmes d'encodage fort comme le triple s-1DESs0 ou le s-1RC2s0 à 128 bits. |
Exemples
Conversion d'une clé privée du format traditionnel vers PKCS#5 v2.0 en utilisant le triple DES :
.Vb 1 & openssl pkcs8 -in key.pem -topk8 -v2 des3 -out enckey.pem .Ve Conversion d'une clé privée PKCS#8 en utilisant un algorithme compatible PKCS#5 1.5 (DES) :
.Vb 1 & openssl pkcs8 -in key.pem -topk8 -out enckey.pem .Ve Conversion d'une clé privée vers PKCS#8 utilisant un algorithme compatible PKCS#12 (3DES) :
.Vb 1 & openssl pkcs8 -in key.pem -topk8 -out enckey.pem -v1 PBE-SHA1-3DES .Ve Lire une clé privée DER claire au format PKCS#8:
.Vb 1 & openssl pkcs8 -inform DER -nocrypt -in key.der -out key.pem .Ve Conversion d'une clé privée d'un format PKCS#8 quelconque vers le format traditionnel :
.Vb 1 & openssl pkcs8 -in pk8.pem -out key.pem .Ve
Standards
Des jeux de test de cette implémentation de PKCS#5 v2.0 ont été postés sur la liste pkcs-tng en utilisant triple DES, DES et RC2 avec un nombre d'itérations élevé. Certains personnes ont confirmé qu'ils pouvaient décrypter les clés privées produites et ainsi on peut supposer que l'implémentation PKCS#5 v2.0 est suffisamment correcte au moins concernant ces algorithmes.
Le format des clés privées PKCS#8 DSA (entre autres) n'est pas bien documenté, étant caché dans PKCS#11 v2.01, section 11.9. Le format par défaut d'OpenSSL pour les clés privées respecte ce standard.
Bugs
Il devrait y avoir une option qui affiche l'algorithme d'encodage utilisé et d'autres détails comme le nombre d'itérations.
Le format par défaut des clés privées pour OpenSSL devrait être PKCS#8 avec triple DES et PKCS#5 v2.0. Pour assurer la compatibilité avec quelques-uns des utilitaires, l'ancien format est maintenu actuellement.
Voir aussi
dsa(1), rsa(1), genrsa(1), gendsa(1) .rn }` '' .IX Title "PKCS8 1" .IX Name "pkcs8 - PKCS#8 format private key conversion tool" .IX Header "NOM" .IX Header "SYNOPSIS" .IX Header "DESCRIPTION" .IX Header "OPTIONS DE LA COMMANDE" .IX Item "-topk8" .IX Item "-inform s-1DERs0|s-1PEMs0" .IX Item "-outform s-1DERs0|s-1PEMs0" .IX Item "-in nomfichier" .IX Item "-passin arg" .IX Item "-out nomfichier" .IX Item "-passout arg" .IX Item "-nocrypt" .IX Item "-nooct" .IX Item "-embed" .IX Item "-nsdb" .IX Item "-v2 alg" .IX Item "-v1 alg" .IX Header "NOTES" .IX Header "Les algorithmes PKCS#5 v1.5 et PKCS#12." .IX Item "s-1PBEs0-s-1MD2-DESs0 s-1PBEs0-s-1MD5-DESs0" .IX Item "s-1PBEs0-s-1SHA1-RC2-64s0 s-1PBEs0-s-1MD2-RC2-64s0 s-1PBEs0-s-1MD5-RC2-64s0 s-1PBEs0-s-1SHA1-DESs0" .IX Item "s-1PBEs0-s-1SHA1-RC4-128s0 s-1PBEs0-s-1SHA1-RC4-40s0 s-1PBEs0-s-1SHA1-3DESs0 s-1PBEs0-s-1SHA1-2DESs0 s-1PBEs0-s-1SHA1-RC2-128s0 s-1PBEs0-s-1SHA1-RC2-40s0" .IX Header "EXEMPLES" .IX Header "STANDARDS" .IX Header "BOGUES" .IX Header "VOIR AUSSI"
Poster un commentaire