Difference between revisions of "PKCS 12"

From MgmtWiki
Jump to: navigation, search
(Problem)
(Solution)
Line 21: Line 21:
 
   openssl pkcs12 -export -out domain.name.pfx -inkey domain.name.key -in domain.name.crt -in intermediate.crt -in rootca.crt
 
   openssl pkcs12 -export -out domain.name.pfx -inkey domain.name.key -in domain.name.crt -in intermediate.crt -in rootca.crt
  
You can install openssl from here: [https://www.openssl.org/community/binaries.html openssl binaries.]
+
You can install openssl from here: [https://www.openssl.org/community/binaries.html openssl binaries.], or just run bash as it is typically included in that shell.
  
 
==References==
 
==References==

Revision as of 15:51, 31 January 2021

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

You can install openssl from here: openssl binaries., or just run bash as it is typically included in that shell.

References