Skip to content

Instantly share code, notes, and snippets.

@5nizza
Created June 10, 2014 13:51
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 5 You must be signed in to fork a gist
  • Save 5nizza/7ae9cff0d43f33818a33 to your computer and use it in GitHub Desktop.
Save 5nizza/7ae9cff0d43f33818a33 to your computer and use it in GitHub Desktop.
A quick and dirty script to remove password from SSL certificate. Source: http://serverfault.com/questions/515833/how-to-remove-private-key-password-from-pkcs12-container
#!/bin/bash
# the source: http://serverfault.com/questions/515833/how-to-remove-private-key-password-from-pkcs12-container
if [ $# -ne 2 ]
then
echo "Usage: `basename $0` YourPKCSFile YourPKCSPassword"
exit $E_BADARGS
fi
YourPKCSFile=$1
PASSWORD=$2
TemporaryPassword=123
#First, extract the certificate:
openssl pkcs12 -clcerts -nokeys -in $YourPKCSFile -out certificate.crt -password pass:$PASSWORD -passin pass:$PASSWORD
#Second, the CA key:
openssl pkcs12 -cacerts -nokeys -in $YourPKCSFile -out ca-cert.ca -password pass:$PASSWORD -passin pass:$PASSWORD
#Now, the private key:
openssl pkcs12 -nocerts -in $YourPKCSFile -out private.key -password pass:$PASSWORD -passin pass:$PASSWORD -passout pass:$TemporaryPassword
#Remove now the passphrase:
openssl rsa -in private.key -out "NewKeyFile.key" -passin pass:$TemporaryPassword
#Put things together for the new PKCS-File:
cat "NewKeyFile.key" > PEM.pem
cat "certificate.crt" >> PEM.pem
cat "ca-cert.ca" >> PEM.pem
#And create the new file:
openssl pkcs12 -export -nodes -CAfile ca-cert.ca -in PEM.pem -out $YourPKCSFile"_no_password"
#cleaning
rm NewKeyFile.key ca-cert.ca certificate.crt private.key PEM.pem
#Now you have a new PKCS12 key file without passphrase on the private key part.
@0x6d6c
Copy link

0x6d6c commented Feb 22, 2018

The TemporaryPassword is to short causing an error:

UI routines:UI_set_result:result too small:crypto/ui/ui_lib.c:765:You must type in 4 to 1023 characters

(OpenSSL 1.1.0g 2 Nov 2017), so it has to be at least 4 characters long.

@botlabsDev
Copy link

In case of the following error: ../crypto/evp/evp_fetch.c:349:Global default library context, Algorithm (RC2-40-CBC : 0)
add -legacy after openssl pkcs12 to all lines.

Src: openssl/openssl#12840

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment