452 votes

Comment créer un fichier .pfx à partir d'un certificat et d'une clé privée ?

J'ai besoin d'un fichier .pfx pour installer https sur un site Web sur IIS.

J'ai deux fichiers distincts : le certificat (.cer ou pem) et la clé privée (.crt) mais IIS n'accepte que les fichiers .pfx.

J'ai évidemment installé le certificat et il est disponible dans le gestionnaire de certificats (mmc) mais lorsque je sélectionne l'assistant d'exportation de certificats, je ne peux pas sélectionner le format PFX (il est grisé).

Existe-t-il des outils pour le faire ou des exemples en C# pour le faire de manière programmée ?

2 votes

1 votes

Vrai, mais sa réponse n'est pas claire et ne résout rien dans mon cas

0 votes

710voto

jdehlin Points 922

Vous devrez utiliser openssl.

openssl pkcs12 -export -out domain.name.pfx -inkey domain.name.key -in domain.name.crt

Le fichier clé est simplement un fichier texte contenant votre clé privée.

Si vous disposez d'une autorité de certification racine et de certitudes intermédiaires, incluez-les également en utilisant plusieurs fichiers -in paramètres

openssl pkcs12 -export -out domain.name.pfx -inkey domain.name.key -in domain.name.crt -in intermediate.crt -in rootca.crt

Vous pouvez installer openssl depuis ici : openssl

13 votes

"Le fichier clé est juste un fichier texte avec votre clé privée dedans." Vrai, sauf quand ça ne l'est pas.

0 votes

Merci, cela m'a beaucoup aidé. J'ai dû me connecter à un serveur Ubuntu pour que cela fonctionne réellement, mais j'ai pu le faire là-bas et ensuite envoyer le fichier par SCP. J'ai également eu besoin d'utiliser un certificat combiné (mon certificat est chaîné) mais j'avais déjà concaténé les fichiers appropriés pour fonctionner avec Nginx, sur ce serveur donc j'ai juste utilisé cela. Vraiment utile !

44 votes

Merci, j'ajouterai que si vous disposez d'une autorité de certification racine ou d'un certificat intermédiaire, vous pouvez l'annexer en fournissant de multiples -dans paramètre : openssl pkcs12 -export -out domain.name.pfx -inkey domain.name.key -in domain.name.crt -in intermediate.crt -in rootca.crt

42voto

joelnet Points 1762

Si vous recherchez une interface graphique Windows, consultez DigiCert. Je viens de l'utiliser et c'était assez simple.

Dans l'onglet SSL, j'ai d'abord importé le certificat. Puis, une fois le certificat sélectionné, j'ai pu l'exporter au format PFX, avec et sans fichier clé.

https://www.digicert.com/util

16 votes

Lorsque je fais cela, il me dit que je n'ai pas la clé privée importée sur mon ordinateur. Ce qui est vrai.

6 votes

@NielsBrinch Quand je fais ça, il me dit aussi que je n'ai pas la clé privée importée sur mon ordinateur. Sauf que c'est faux, elle est dans le même dossier que le certificat....

1 votes

@NielsBrinch Pour résoudre ce problème, j'ai dû soumettre à nouveau une nouvelle RSC et télécharger à nouveau le certificat lorsqu'il a été traité, la clé privée était cachée sur le serveur/machine sur lequel vous avez créé la RSC. Cela a résolu ce message d'erreur.

38voto

Seymour Points 3972

L'utilitaire de ligne de commande Pvk2Pfx de Microsoft semble avoir la fonctionnalité dont vous avez besoin :

Pvk2Pfx (Pvk2Pfx.exe) est un outil en ligne de commande qui copie les informations relatives aux clés publiques et privées contenues dans les fichiers .spc, .cer et .pvk dans un fichier Personal Information Exchange (.pfx).
http://msdn.microsoft.com/en-us/library/Windows/hardware/ff550672(v=vs.85).aspx

Remarque : si vous avez besoin/souhaitez/préférez une solution en C#, vous pouvez envisager d'utiliser la fonction http://www.bouncycastle.org/ api.

1 votes

Argument -spc pour le fichier .cer

2 votes

C:\Program Fichiers (x86) \Windows Kits \10\bin\10.0.15063.0\x64\pvk2pfx.exe

34voto

rainabba Points 429

Vous n'avez PAS besoin d'openssl ou de makecert ou de quoi que ce soit d'autre. Vous n'avez pas non plus besoin de la clé personnelle qui vous a été donnée par votre autorité de certification. Je peux presque garantir que le problème est que vous vous attendez à pouvoir utiliser la clé et les fichiers cer fournis par votre CA mais qu'ils ne sont pas basés sur "la manière IIS". Je suis tellement fatigué de voir des informations mauvaises et difficiles à comprendre que j'ai décidé de bloguer sur le sujet et la solution. Lorsque vous comprendrez ce qui se passe et que vous verrez à quel point c'est facile, vous aurez envie de m'embrasser :)

Certificats SSL pour IIS avec PFX, une fois pour toutes - SSL et IIS expliqués - http://rainabba.blogspot.com/2014/03/ssl-certs-for-iis-with-pfx-once-and-for.html

Utilisez l'interface utilisateur "Server Certificates" d'IIS pour "Generate Certificate Request" (les détails de cette demande sont hors de portée de cet article mais ces détails sont critiques). Vous obtiendrez ainsi une RSC préparée pour IIS. Vous donnez ensuite ce CSR à votre CA et demandez un certificat. Ensuite, vous prenez le fichier CER/CRT qu'ils vous donnent, retournez à IIS, "Complete Certificate Request" à l'endroit même où vous avez généré la demande. Il se peut qu'on vous demande un .CER et que vous ayez un .CRT. Il s'agit de la même chose. Il suffit de changer l'extension ou d'utiliser l'option . pour sélectionner votre .CRT. Maintenant, fournissez un "nom convivial" correct (*.votredomaine.com, yourdomain.com, foo.votredomaine.com, etc.) C'EST IMPORTANT ! Cela DOIT correspondre à ce pour quoi vous avez configuré le CSR et ce que votre CA vous a fourni. Si vous avez demandé un joker, votre autorité de certification doit avoir approuvé et généré un joker et vous devez utiliser le même. Si votre CSR a été généré pour foo.yourdomain.com, vous DEVEZ fournir la même chose à cette étape.

0 votes

Les PFX ne sont pas seulement destinés à IIS, ils peuvent être utilisés pour la signature de codes. Sauf erreur de ma part, signtool.exe et signcode.exe n'acceptent que les fichiers .pfx.

4 votes

La question commençait par : "J'ai besoin d'un fichier .pfx pour installer https sur un site web sur IIS."

37 votes

Pouvez-vous s'il vous plaît mettre le contenu pertinent de votre poste dans votre réponse s'il vous plaît ? De cette façon, la réponse reste pertinente même si votre blog disparaît. Vous pouvez toujours créer un lien vers votre blog. En l'état actuel des choses, il n'y a aucune information utile dans le contenu de la réponse.

5voto

sudhAnsu63 Points 1971

J'ai obtenu un lien avec votre exigence. Combiner les fichiers CRT et KEY dans un PFX avec OpenSSL

Extraits du lien ci-dessus :

Tout d'abord, nous devons extraire le certificat de l'autorité de certification racine du fichier existant .crt existant, car nous en aurons besoin plus tard. Donc, ouvrez le fichier .crt et cliquez sur l'onglet Certification Path.

Cliquez sur le certificat le plus élevé (dans ce cas, VeriSign) et cliquez sur View Certificat. Sélectionnez l'onglet Détails et cliquez sur Copier dans le fichier

Sélectionnez le certificat X.509 (.CER) codé en base-64 Enregistrez-le sous le nom de rootca.cer ou quelque chose de similaire. Placez-le dans le même dossier que les autres fichiers.

Renommez-le de rootca.cer en rootca.crt Maintenant nous devrions avoir 3 fichiers dans notre dossier à partir duquel nous pouvons créer un fichier PFX.

C'est ici que nous avons besoin d'OpenSSL. Nous pouvons soit le télécharger et l'installer sur Windows ou simplement ouvrir le terminal sous OSX.

EDITAR:

  1. Il existe un avec des informations étape par étape sur la façon d'installer le certificat.

  2. Après avoir installé avec succès, exportez le certificat, choisissez .pfx format, inclure la clé privée.

    Note importante : : Pour exporter le certificat au format .pfx, vous devez suivre les étapes suivantes sur la même machine que celle à partir de laquelle vous avez demandé le certificat. .

  3. Le fichier importé peut être téléchargé sur le serveur.

1 votes

Pouvez-vous nous expliquer comment vous avez créé le fichier PFX à partir du fichier CERT ? Où ou comment vous avez créé le fichier KEY, s'il vous plaît, tout est confus.

3 votes

Pouvez-vous expliquer à partir d'ici comment ils ont obtenu le fichier KEY ? par exemple openssl pkcs12 -inkey example.com.key -in example.com.crt -export -out example.com.pfx

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X