PKCS #12: Personal Information Exchange Syntax", PKCS Version 1.1, December 2012.
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.
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.
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.