6

I have a certificate in .pfx format and I need to extract the Public, Private and CA certificates using ruby.

Using the shell I can make it this way:

# Extract Public Key (ask for password)
openssl pkcs12 -in file.pfx -out file_public.pem -clcerts -nokeys

# Extract Certificate Authority Key (ask for password)
openssl pkcs12 -in file.pfx -out file_ca.pem -cacerts -nokeys

# Extract Private Key (ask for password)
openssl pkcs12 -in file.pfx -out file_private.pem -nocerts -nodes

# Extract RSA Private Key from private .pem
openssl rsa -in file_private.pem -out file_private_rsa.key

# Create Combo file with Public and RSA Private Keys
cat file_private_rsa.key file_public.pem > file_combo.pem

On this post DMKE shows how to transform the keys to .PFX, but how to do the other way round?

polonski
  • 143
  • 8
arthurnobrega
  • 61
  • 2
  • 3

2 Answers2

9
pkcs = OpenSSL::PKCS12.new(File.read("xyz.p12"), "password_for_xyz.p12")
key = OpenSSL::PKey::RSA.new(pkcs.key.to_pem)
cert = OpenSSL::X509::Certificate.new(pkcs.certificate.to_pem)
4
pkcs = OpenSSL::PKCS12.new(File.read("file.pfx"), "password")

pkcs.key.to_pem

pkcs.certificate.to_pem
Stephen
  • 3,341
  • 1
  • 22
  • 21