====== Create a .pfx/.p12 certificate file using OpenSSL ======
The PKCS#12 or PFX format is a binary format for storing the server certificate, any intermediate certificates, and the private key into a single encryptable file. PFX files are usually found with the extensions .pfx and .p12. PFX files are typically used on Windows machines to import and export certificates and private keys.
==== Requirements: ====
* The original private key used for the certificate
* A PEM (.pem, .crt, .cer) or PKCS#7/P7B (.p7b, .p7c) File
* OpenSSL
The commands below demonstrate examples of how to create a .pfx/.p12 file in the command line using OpenSSL.
===== PEM (.pem, .crt, .cer) to PFX =====
openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile more.crt
Breaking down the command:
* openssl – the command for executing OpenSSL
* pkcs12 – the file utility for PKCS#12 files in OpenSSL
* -export -out certificate.pfx – export and save the PFX file as certificate.pfx
* -inkey privateKey.key – use the private key file privateKey.key as the private key to combine with the certificate.
* -in certificate.crt – use certificate.crt as the certificate the private key will be combined with.
* -certfile more.crt – This is optional, this is if you have any additional certificates you would like to include in the PFX file.
===== PKCS#7/P7B (.p7b, .p7c) to PFX =====
P7B files cannot be used to directly create a PFX file. P7B files must be converted to PEM. Once converted to PEM, follow the above steps to create a PFX file from a PEM file.
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.crt
Breaking down the command:
* openssl – the command for executing OpenSSL
* pkcs7 – the file utility for PKCS#7 files in OpenSSL
* -print_certs -in certificate.p7b – prints out any certificates or CRLs contained in the file.
* -out certificate.crt – output the file as certificate.crt