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