61 votes

Comment supprimer le mot de passe de la clé privée d'un conteneur pkcs12 ?

  1. J'ai extrait le certificat en utilisant la commande SSL/export de Chrome.
  2. Je l'ai ensuite fourni en entrée à openvpn - dans la configuration d'openvpn :
    pkcs12 "path/to/pkcs12_container"
  3. Lors de l'appel openvpn ~/openvp_config il demande un mot de passe pour la clé privée (que j'ai saisi lors de l'exportation avec Chrome) :
    Enter Private Key Password:...
  4. Je souhaite supprimer cette demande de mot de passe.

La question : comment supprimer le mot de passe de la clé privée de pkcs12 ?

C'est-à-dire créer un fichier pkcs12 qui ne nécessite pas de mot de passe.

(il semble que j'ai déjà fait cela il y a un an et que je l'ai oublié.)

77voto

zero0 Points 1367

Elle peut être obtenue par différents moyens openssl appels.

  • MOT DE PASSE est votre mot de passe actuel
  • VotreFichierPKCS est le fichier que vous souhaitez convertir
  • NewPKCSWithoutPassphraseFile est le fichier cible pour le PKCS12 sans phrase de passe.

Commencez par extraire le certificat :

$ openssl pkcs12 -clcerts -nokeys -in "YourPKCSFile" \
      -out certificate.crt -password pass:PASSWORD -passin pass:PASSWORD

Deuxièmement, la clé CA :

$ openssl pkcs12 -cacerts -nokeys -in "YourPKCSFile" \
      -out ca-cert.ca -password pass:PASSWORD -passin pass:PASSWORD

Maintenant, la clé privée :

$ openssl pkcs12 -nocerts -in "YourPKCSFile" \
      -out private.key -password pass:PASSWORD -passin pass:PASSWORD \
      -passout pass:TemporaryPassword

Supprimez maintenant la phrase d'authentification :

$ openssl rsa -in private.key -out "NewKeyFile.key" \
      -passin pass:TemporaryPassword

Rassembler les éléments pour le nouveau fichier PKCS :

$ cat "NewKeyFile.key"  \
      "certificate.crt" \
      "ca-cert.ca" > PEM.pem

Et créez le nouveau fichier :

$ openssl pkcs12 -export -nodes -CAfile ca-cert.ca \
      -in PEM.pem -out "NewPKCSWithoutPassphraseFile"

Vous disposez à présent d'un nouveau fichier de clés PKCS12 sans phrase d'authentification dans la partie clé privée.

56voto

Koen. Points 796

La solution la plus simple J'ai trouvé です

Exportation vers un fichier pem temporaire

openssl pkcs12 -in protected.p12 -nodes -out temp.pem
#  -> Enter password

Reconvertir pem en p12

openssl pkcs12 -export -in temp.pem  -out unprotected.p12
# -> Just press [return] twice for no password

Supprimer le certificat temporaire

rm temp.pem

13voto

tlhackque Points 69

Cette opération peut facilement être réalisée en une seule étape, sans fichier temporaire :

openssl pkcs12 -in "PKCSFile" -nodes | openssl pkcs12 -export -out "PKCSFile-Nopass"

Répondez à l'invite Mot de passe d'importation en indiquant le mot de passe. Répondez aux invites du mot de passe d'exportation par <CR>.

Erledigt.

Notez que cela permet de gérer n'importe quel nombre de certificats intermédiaires pouvant se trouver dans le paquet...

Je recommande fortement de faire attention au fichier résultant ; ce serait une bonne idée de mettre l'umask à 377 d'abord (non-unix : cela signifie que seul le propriétaire peut lire le fichier créé.) Je suppose que c'est 2 étapes, si votre umask par défaut est permissif...

2voto

kuang Points 21

Maintenant, la clé privée :

openssl pkcs12 -nocerts -in "YourPKCSFile" -out private.key -password pass:PASSWORD -passin pass:PASSWORD -passout pass:TemporaryPassword

Supprimez maintenant la phrase d'authentification :

openssl rsa -in private.key -out "NewKeyFile.key" -passin pass:TemporaryPassword

Les deux étapes peuvent être remplacées par

openssl pkcs12 -nocerts -in "YourPKCSFile" -out private.key -nodes

1voto

Haresh Points 3

Voici une solution purement PowerShell qui fonctionne sans OpenSSL :

Install-Module -Name 'Carbon.Cryptography'
$password = Read-Host -AsSecureString
$cert = Get-CCertificate -Path PATH -Password $password -KeyStorageFlags Exportable
[IO.File]::WriteAllBytes(OUT_PATH, $cert.Export('Pfx'))

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X