PKCS 12

From MgmtWiki
Jump to: navigation, search

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