]> git.ipfire.org Git - thirdparty/openssl.git/blame - doc/man1/pkcs12.pod
mention what happens if OPENSSL_NO_RC2 is defined
[thirdparty/openssl.git] / doc / man1 / pkcs12.pod
CommitLineData
dad666fb
DSH
1=pod
2
3=head1 NAME
4
3f2181e6 5openssl-pkcs12,
dad666fb
DSH
6pkcs12 - PKCS#12 file utility
7
8=head1 SYNOPSIS
9
10B<openssl> B<pkcs12>
169394d4 11[B<-help>]
c3ed3b6e
DSH
12[B<-export>]
13[B<-chain>]
48b53522 14[B<-inkey file_or_id>]
c3ed3b6e
DSH
15[B<-certfile filename>]
16[B<-name name>]
17[B<-caname name>]
18[B<-in filename>]
19[B<-out filename>]
20[B<-noout>]
21[B<-nomacver>]
22[B<-nocerts>]
23[B<-clcerts>]
24[B<-cacerts>]
25[B<-nokeys>]
26[B<-info>]
d42d0a4d 27[B<-des | -des3 | -idea | -aes128 | -aes192 | -aes256 | -aria128 | -aria192 | -aria256 | -camellia128 | -camellia192 | -camellia256 | -nodes>]
c3ed3b6e 28[B<-noiter>]
ec1edeb5 29[B<-maciter | -nomaciter | -nomac>]
c3ed3b6e
DSH
30[B<-twopass>]
31[B<-descert>]
ec1edeb5
NL
32[B<-certpbe cipher>]
33[B<-keypbe cipher>]
34[B<-macalg digest>]
c3ed3b6e
DSH
35[B<-keyex>]
36[B<-keysig>]
a3fe382e
DSH
37[B<-password arg>]
38[B<-passin arg>]
39[B<-passout arg>]
3ee1eac2
RS
40[B<-rand file...>]
41[B<-writerand file>]
ec1edeb5
NL
42[B<-CAfile file>]
43[B<-CApath dir>]
40e2d76b
MC
44[B<-no-CAfile>]
45[B<-no-CApath>]
ec1edeb5 46[B<-CSP name>]
dad666fb
DSH
47
48=head1 DESCRIPTION
49
50The B<pkcs12> command allows PKCS#12 files (sometimes referred to as
51PFX files) to be created and parsed. PKCS#12 files are used by several
ef7eaa4c 52programs including Netscape, MSIE and MS Outlook.
dad666fb 53
3dfda1a6 54=head1 OPTIONS
dad666fb
DSH
55
56There are a lot of options the meaning of some depends of whether a PKCS#12 file
6264c9b2 57is being created or parsed. By default a PKCS#12 file is parsed. A PKCS#12
dad666fb
DSH
58file can be created by using the B<-export> option (see below).
59
60=head1 PARSING OPTIONS
61
62=over 4
63
169394d4
MR
64=item B<-help>
65
66Print out a usage message.
67
dad666fb
DSH
68=item B<-in filename>
69
70This specifies filename of the PKCS#12 file to be parsed. Standard input is used
71by default.
72
73=item B<-out filename>
74
112161bd
DSH
75The filename to write certificates and private keys to, standard output by
76default. They are all written in PEM format.
dad666fb 77
856c6dfb 78=item B<-passin arg>
dad666fb 79
c4de074e 80The PKCS#12 file (i.e. input file) password source. For more information about
112161bd 81the format of B<arg> see the B<PASS PHRASE ARGUMENTS> section in
9b86974e 82L<openssl(1)>.
dad666fb 83
a3fe382e 84=item B<-passout arg>
dad666fb 85
c4de074e 86Pass phrase source to encrypt any outputted private keys with. For more
112161bd 87information about the format of B<arg> see the B<PASS PHRASE ARGUMENTS> section
9b86974e 88in L<openssl(1)>.
f07fb9b2 89
856c6dfb
SS
90=item B<-password arg>
91
92With -export, -password is equivalent to -passout.
93Otherwise, -password is equivalent to -passin.
94
dad666fb
DSH
95=item B<-noout>
96
c4de074e 97This option inhibits output of the keys and certificates to the output file
112161bd 98version of the PKCS#12 file.
dad666fb
DSH
99
100=item B<-clcerts>
101
c4de074e 102Only output client certificates (not CA certificates).
dad666fb
DSH
103
104=item B<-cacerts>
105
c4de074e 106Only output CA certificates (not client certificates).
dad666fb
DSH
107
108=item B<-nocerts>
109
c4de074e 110No certificates at all will be output.
dad666fb
DSH
111
112=item B<-nokeys>
113
c4de074e 114No private keys will be output.
dad666fb
DSH
115
116=item B<-info>
117
c4de074e
P
118Output additional information about the PKCS#12 file structure, algorithms
119used and iteration counts.
dad666fb
DSH
120
121=item B<-des>
122
c4de074e 123Use DES to encrypt private keys before outputting.
dad666fb
DSH
124
125=item B<-des3>
126
c4de074e 127Use triple DES to encrypt private keys before outputting, this is the default.
dad666fb
DSH
128
129=item B<-idea>
130
c4de074e 131Use IDEA to encrypt private keys before outputting.
dad666fb 132
ec1edeb5
NL
133=item B<-aes128>, B<-aes192>, B<-aes256>
134
c4de074e 135Use AES to encrypt private keys before outputting.
ec1edeb5 136
d42d0a4d
P
137=item B<-aria128>, B<-aria192>, B<-aria256>
138
c4de074e 139Use ARIA to encrypt private keys before outputting.
d42d0a4d 140
ec1edeb5
NL
141=item B<-camellia128>, B<-camellia192>, B<-camellia256>
142
c4de074e 143Use Camellia to encrypt private keys before outputting.
ec1edeb5 144
dad666fb
DSH
145=item B<-nodes>
146
c4de074e 147Don't encrypt the private keys at all.
dad666fb
DSH
148
149=item B<-nomacver>
150
c4de074e 151Don't attempt to verify the integrity MAC before reading the file.
dad666fb
DSH
152
153=item B<-twopass>
154
c4de074e 155Prompt for separate integrity and encryption passwords: most software
dad666fb 156always assumes these are the same so this option will render such
40b64553
MC
157PKCS#12 files unreadable. Cannot be used in combination with the options
158-password, -passin (if importing) or -passout (if exporting).
dad666fb
DSH
159
160=back
161
162=head1 FILE CREATION OPTIONS
163
164=over 4
165
166=item B<-export>
167
168This option specifies that a PKCS#12 file will be created rather than
169parsed.
170
171=item B<-out filename>
172
173This specifies filename to write the PKCS#12 file to. Standard output is used
174by default.
175
176=item B<-in filename>
177
112161bd
DSH
178The filename to read certificates and private keys from, standard input by
179default. They must all be in PEM format. The order doesn't matter but one
180private key and its corresponding certificate should be present. If additional
181certificates are present they will also be included in the PKCS#12 file.
dad666fb 182
48b53522 183=item B<-inkey file_or_id>
dad666fb 184
c4de074e 185File to read private key from. If not present then a private key must be present
dad666fb 186in the input file.
48b53522
RS
187If no engine is used, the argument is taken as a file; if an engine is
188specified, the argument is given to the engine as a key identifier.
dad666fb
DSH
189
190=item B<-name friendlyname>
191
112161bd
DSH
192This specifies the "friendly name" for the certificate and private key. This
193name is typically displayed in list boxes by software importing the file.
dad666fb
DSH
194
195=item B<-certfile filename>
196
197A filename to read additional certificates from.
198
199=item B<-caname friendlyname>
200
201This specifies the "friendly name" for other certificates. This option may be
202used multiple times to specify names for all certificates in the order they
203appear. Netscape ignores friendly names on other certificates whereas MSIE
204displays them.
205
a3fe382e 206=item B<-pass arg>, B<-passout arg>
dad666fb 207
c4de074e 208The PKCS#12 file (i.e. output file) password source. For more information about
a3fe382e 209the format of B<arg> see the B<PASS PHRASE ARGUMENTS> section in
9b86974e 210L<openssl(1)>.
dad666fb 211
f07fb9b2
DSH
212=item B<-passin password>
213
c4de074e 214Pass phrase source to decrypt any input private keys with. For more information
a3fe382e 215about the format of B<arg> see the B<PASS PHRASE ARGUMENTS> section in
9b86974e 216L<openssl(1)>.
f07fb9b2 217
dad666fb
DSH
218=item B<-chain>
219
c4de074e 220If this option is present then an attempt is made to include the entire
dad666fb
DSH
221certificate chain of the user certificate. The standard CA store is used
222for this search. If the search fails it is considered a fatal error.
223
224=item B<-descert>
225
c4de074e 226Encrypt the certificate using triple DES, this may render the PKCS#12
dad666fb 227file unreadable by some "export grade" software. By default the private
8c47e55e
VK
228key is encrypted using triple DES and the certificate using 40 bit RC2
229unless RC2 is disabled in which case triple DES is used.
dad666fb
DSH
230
231=item B<-keypbe alg>, B<-certpbe alg>
232
c4de074e 233These options allow the algorithm used to encrypt the private key and
112161bd 234certificates to be selected. Any PKCS#5 v1.5 or PKCS#12 PBE algorithm name
740ceb5b 235can be used (see B<NOTES> section for more information). If a cipher name
112161bd
DSH
236(as output by the B<list-cipher-algorithms> command is specified then it
237is used with PKCS#5 v2.0. For interoperability reasons it is advisable to only
238use PKCS#12 algorithms.
dad666fb
DSH
239
240=item B<-keyex|-keysig>
241
c4de074e 242Specifies that the private key is to be used for key exchange or just signing.
dad666fb
DSH
243This option is only interpreted by MSIE and similar MS software. Normally
244"export grade" software will only allow 512 bit RSA keys to be used for
245encryption purposes but arbitrary length keys for signing. The B<-keysig>
246option marks the key for signing only. Signing only keys can be used for
247S/MIME signing, authenticode (ActiveX control signing) and SSL client
248authentication, however due to a bug only MSIE 5.0 and later support
249the use of signing only keys for SSL client authentication.
250
112161bd
DSH
251=item B<-macalg digest>
252
c4de074e 253Specify the MAC digest algorithm. If not included them SHA1 will be used.
112161bd 254
dad666fb
DSH
255=item B<-nomaciter>, B<-noiter>
256
c4de074e 257These options affect the iteration counts on the MAC and key algorithms.
dad666fb
DSH
258Unless you wish to produce files compatible with MSIE 4.0 you should leave
259these options alone.
260
261To discourage attacks by using large dictionaries of common passwords the
262algorithm that derives keys from passwords can have an iteration count applied
263to it: this causes a certain part of the algorithm to be repeated and slows it
264down. The MAC is used to check the file integrity but since it will normally
265have the same password as the keys and certificates it could also be attacked.
266By default both MAC and encryption iteration counts are set to 2048, using
267these options the MAC and encryption iteration counts can be set to 1, since
268this reduces the file security you should not use these options unless you
269really have to. Most software supports both MAC and key iteration counts.
270MSIE 4.0 doesn't support MAC iteration counts so it needs the B<-nomaciter>
271option.
272
273=item B<-maciter>
274
275This option is included for compatibility with previous versions, it used
276to be needed to use MAC iterations counts but they are now used by default.
277
ec1edeb5
NL
278=item B<-nomac>
279
c4de074e 280Don't attempt to provide the MAC integrity.
ec1edeb5 281
3ee1eac2 282=item B<-rand file...>
d13e4eb0 283
c4de074e 284A file or files containing random data used to seed the random number
3ee1eac2 285generator.
35ed393e 286Multiple files can be specified separated by an OS-dependent character.
b87ef946 287The separator is B<;> for MS-Windows, B<,> for OpenVMS, and B<:> for
a4cfd178 288all others.
d13e4eb0 289
3ee1eac2
RS
290=item [B<-writerand file>]
291
292Writes random data to the specified I<file> upon exit.
293This can be used with a subsequent B<-rand> flag.
294
ec1edeb5
NL
295=item B<-CAfile file>
296
297CA storage as a file.
298
299=item B<-CApath dir>
300
301CA storage as a directory. This directory must be a standard certificate
302directory: that is a hash of each subject name (using B<x509 -hash>) should be
303linked to each certificate.
304
40e2d76b
MC
305=item B<-no-CAfile>
306
c4de074e 307Do not load the trusted CA certificates from the default file location.
40e2d76b
MC
308
309=item B<-no-CApath>
310
c4de074e 311Do not load the trusted CA certificates from the default directory location.
40e2d76b 312
ec1edeb5
NL
313=item B<-CSP name>
314
c4de074e 315Write B<name> as a Microsoft CSP name.
ec1edeb5 316
dad666fb
DSH
317=back
318
319=head1 NOTES
320
321Although there are a large number of options most of them are very rarely
322used. For PKCS#12 file parsing only B<-in> and B<-out> need to be used
323for PKCS#12 file creation B<-export> and B<-name> are also used.
324
0cd4498b
DSH
325If none of the B<-clcerts>, B<-cacerts> or B<-nocerts> options are present
326then all certificates will be output in the order they appear in the input
327PKCS#12 files. There is no guarantee that the first certificate present is
328the one corresponding to the private key. Certain software which requires
329a private key and certificate and assumes the first certificate in the
330file is the one corresponding to the private key: this may not always
331be the case. Using the B<-clcerts> option will solve this problem by only
3b80e3aa 332outputting the certificate corresponding to the private key. If the CA
0cd4498b
DSH
333certificates are required then they can be output to a separate file using
334the B<-nokeys -cacerts> options to just output CA certificates.
335
dad666fb
DSH
336The B<-keypbe> and B<-certpbe> algorithms allow the precise encryption
337algorithms for private keys and certificates to be specified. Normally
338the defaults are fine but occasionally software can't handle triple DES
339encrypted private keys, then the option B<-keypbe PBE-SHA1-RC2-40> can
340be used to reduce the private key encryption to 40 bit RC2. A complete
341description of all algorithms is contained in the B<pkcs8> manual page.
342
1194ea8d
AP
343Prior 1.1 release passwords containing non-ASCII characters were encoded
344in non-compliant manner, which limited interoperability, in first hand
345with Windows. But switching to standard-compliant password encoding
346poses problem accessing old data protected with broken encoding. For
347this reason even legacy encodings is attempted when reading the
348data. If you use PKCS#12 files in production application you are advised
349to convert the data, because implemented heuristic approach is not
350MT-safe, its sole goal is to facilitate the data upgrade with this
351utility.
352
dad666fb
DSH
353=head1 EXAMPLES
354
355Parse a PKCS#12 file and output it to a file:
356
357 openssl pkcs12 -in file.p12 -out file.pem
358
359Output only client certificates to a file:
360
361 openssl pkcs12 -in file.p12 -clcerts -out file.pem
362
363Don't encrypt the private key:
1bc74519 364
dad666fb
DSH
365 openssl pkcs12 -in file.p12 -out file.pem -nodes
366
367Print some info about a PKCS#12 file:
368
369 openssl pkcs12 -in file.p12 -info -noout
370
371Create a PKCS#12 file:
372
373 openssl pkcs12 -export -in file.pem -out file.p12 -name "My Certificate"
374
375Include some extra certificates:
376
377 openssl pkcs12 -export -in file.pem -out file.p12 -name "My Certificate" \
378 -certfile othercerts.pem
379
dad666fb
DSH
380=head1 SEE ALSO
381
9b86974e 382L<pkcs8(1)>
dad666fb 383
e2f92610
RS
384=head1 COPYRIGHT
385
d42d0a4d 386Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved.
e2f92610 387
449040b4 388Licensed under the Apache License 2.0 (the "License"). You may not use
e2f92610
RS
389this file except in compliance with the License. You can obtain a copy
390in the file LICENSE in the source distribution or at
391L<https://www.openssl.org/source/license.html>.
392
393=cut