PKCS 12
Contents
Full Title
PKCS #12: Personal Information Exchange Syntax", PKCS Version 1.1, December 2012.
Context
The full PKCS #12 standard is very complex. It enables buckets of complex objects such as PKCS #8 structures, nested deeply. But in practice it is normally used to store just one private key and its associated certificate chain.
Problem
You need a .pfx file to install https on website for Microsoft's or many other web servers. Which is Microsoft's method for storing a PKCS12 key structure.
If you have two separate files: certificate (.cer or pem) and private key (.crt) they need to be converted to P12 or PFX format.
Solution
You will need to use openssl. A password to protect the private key is required by some web servers later in a file. It would be good practice to create a file with the password at this point before you build the PKCS 12 file. The OpenSSL command line app does not display any characters when you are entering your password. Just type it then press enter and you will see that it is working. This password MUST be well protected from disclosure.
openssl pkcs12 -export -out domain.name.pfx -inkey domain.name.key -in domain.name.crt
The key file is just a text file with your private key in it.
If you have a root CA and intermediate certs, then include them as well using multiple -in params
openssl pkcs12 -export -out domain.name.pfx -inkey domain.name.key -in domain.name.crt -in intermediate.crt -in rootca.crt
To look at an existing pfx (pkcs12) container
openssl pkcs12 -nokeys -in /ASP.NET/Https/TrustRegistry.pfx -clcerts -nodes |openssl x509 -noout -text
You can install openssl from here: openssl binaries., or just run bash as openSSL is typically included in that shell.
References
- This version 1.1 standard is now maintained by the IEFT as RFC 7292
- The PKCS#12 standard needs another update commentary by Ryan Hurst.
- The Most Common OpenSSL Commands includes descriptions of the above sequences.