証明書と秘密鍵から.pfxファイルを作成する方法は?


363

IISのWebサイトにhttpsをインストールするには、.pfxファイルが必要です。

証明書(.cerまたはpem)と秘密キー(.crt)の2つのファイルがありますが、IISは.pfxファイルのみを受け入れます。

私は明らかに証明書をインストールし、それは証明書マネージャー(mmc)で利用可能ですが、証明書のエクスポートウィザードを選択すると、PFX形式を選択できません(グレー表示されます)。

それを行うためのツールまたはそれをプログラムで行うC#の例はありますか?



1
真実ですが、その答えは明確ではなく、私の場合は何も修正されません
jlp

@alexl Windowsバージョンはありますか?
jlp


opensslは、ほとんどすべての場合で完全に不要です。私の答えを追加しました(これはブログエントリを作成して提供します)。皮肉なことに、意図したとおりにCSRを生成すると、PFXも不要になる可能性があります。
Rainabba 2014年

回答:


554

opensslを使用する必要があります。

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

キーファイルは、秘密キーが含まれているテキストファイルです。

あなたは、ルートCAと中間本命を持っている場合は、ほかの複数使用としてそれらを含める-inのparamsを

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

ここからopensslをインストールできます:openssl


11
「キーファイルは、秘密キーが含まれているテキストファイルです。」そうでない場合を除いて、真です。
ケーシー

37
おかげで、私はまた、あなたがルートCAまたはintermiediate証明書を持っている場合は、複数の供給することにより、それを追加することができます追加します-inパラメータを:openssl pkcs12 -export -out domain.name.pfx -inkey domain.name.key -in domain.name.crt -in intermediate.crt -in rootca.crt
gerrytan

10
私のために仕事をしました。マイナーな注記として、これをWindowsマシンで実行するには、管理者のコマンドプロンプトでopensslを実行する必要があります。
マーティン・コステロ

13
鍵ファイルはどこから入手しますか?SSL証明書を発行しましたが、キーファイルがどこにも表示されません。p7bファイルと* .crtファイルの束を手に入れました。
Knelis

11
これをopenssl 1.0.2mで機能-certfile intermediate.crt -certfile rootca.crtさせるために.pfx、パスフレーズ/パスワードでを保護するように求められる前に、指定する必要がありました。これは.key、が追加-inファイルと一致せず、「証明書が秘密鍵と一致しません」というエラーメッセージが表示されたためと考えられます。
dragon788

36

Microsoft Pvk2Pfxコマンドラインユーティリティには、必要な機能があるようです。

Pvk2Pfx(Pvk2Pfx.exe)は、.spc、.cer、および.pvkファイルに含まれる公開キーと秘密キーの情報をPersonal Information Exchange(.pfx)ファイルにコピーするコマンドラインツールです。
http://msdn.microsoft.com/en-us/library/windows/hardware/ff550672(v=vs.85).aspx

注:C#ソリューションが必要/希望/推奨する場合は、http: //www.bouncycastle.org/ apiの使用を検討してください


1
.cerファイルの-spc引数
BozoJoe

2
C:\ Program Files(x86)\ Windows Kits \ 10 \ bin \ 10.0.15063.0 \ x64 \ pvk2pfx.exe
Stefan Steiger

35

Windows GUIを探している場合は、DigiCertをチェックしてください。私はこれを使用しただけで、それはかなり簡単でした。

[SSL]タブで、最初に証明書をインポートしました。次に、証明書を選択すると、キーファイルの有無にかかわらず、PFXとしてエクスポートできました。

https://www.digicert.com/util


15
これを行うと、秘密鍵がコンピュータにインポートされていないことがわかります。それは本当です。
Niels Brinch

6
@NielsBrinchこれを行うと、秘密鍵がコンピューターにインポートされていないこともわかります。それが偽であることを期待してください、それは証明書と同じフォルダーにあります...
aBertrand

@NielsBrinchこの問題を解決するには、新しいCSRを再送信し、処理時に証明書を再度ダウンロードする必要がありました。CSRを作成したサーバー/マシンで秘密鍵が非表示になりました。これはそのエラーメッセージを解決しました。
Paddymac

それらとの数年の経験に基づいてDigiCertを推奨できます。
mmell

DigiCertUtil.exe実行可能ファイルのルートディレクトリに秘密キーを含めることを忘れないでください。最も簡単なのは、それを証明書フォルダにコピーすることです。
ジョナス

32

opensslやmakecertなどは必要ありません。また、CAから提供された個人キーは必要ありません。問題は、CAから提供されたキーとcerファイルを使用できることを期待していることはほぼ保証できますが、それらは「IIS方式」に基づいていません。私はここで悪い情報や難しい情報を見るのにうんざりしているので、件名と解決策をブログに書くことにしました。何が起こっているのかを理解し、それがどれほど簡単かを見ると、私を抱きしめたくなるでしょう:)

PFXを使用したIISのSSL証明書(すべて)-SSLおよびIISの説明-http://rainabba.blogspot.com/2014/03/ssl-certs-for-iis-with-pfx-once-and-for.html

IISの「サーバー証明書」UIを使用して「証明書要求を生成」します(この要求の詳細はこの記事の範囲外ですが、それらの詳細は重要です)。これにより、IIS用に準備されたCSRが提供されます。次に、そのCSRをCAに渡し、証明書を要求します。次に、CER / CRTファイルを受け取り、IISに戻り、リクエストを生成したのと同じ場所で「証明書リクエストを完了」します。.CERを要求する場合があり、.CRTがある場合があります。彼らは同じものです。拡張子を変更するか、.CRTを選択するための拡張子ドロップダウン。ここで、適切な「フレンドリ名」(* .yourdomain.com、yourdomain.com、foo.yourdomain.comなど)を入力します。これは重要です!これは、CSRの設定対象とCAから提供されたものと一致する必要があります。ワイルドカードを要求した場合、CAはワイルドカードを承認および生成している必要があり、ワイルドカードを使用する必要があります。CSRがfoo.yourdomain.comに対して生成された場合は、このステップで同じものを提供する必要があります。


2
「IISのWebサイトにhttpsをインストールするには、.pfxファイルが必要です。」という質問から始まりました。
Rainabba 2014年

34
あなたの回答にあなたの投稿の関連コンテンツを入れてもらえますか?そうすれば、たとえブログが消えたとしても、答えは適切です。引き続きブログにリンクできます。現状、回答内容に役立つ情報はありません。
Deanna

16
これは、新しい証明書を要求する場合は最も簡単な方法ですが、証明書や秘密鍵(たとえば、Apacheで以前に使用したもの)をすでに持っている場合は機能しません。IISの証明書署名要求が新しい秘密鍵を生成するためです。 key.IISのこの側面は本当に面倒です。なぜなら、すべての「完全な要求」が行うことは、秘密鍵を公開証明書と組み合わせてpfxを生成することであり、それを知っている個別のPEM形式のファイルとして受け入れることができない理由です。
Chris Chilvers、2015年

2
私はあなたの解決策が「正しい方法」である可能性が最も高いことを認めますが、opensslをいじるよりも1つのツール、1つのコマンドライン呼び出し、1つのパスワードを実行するよりも努力が必要だと思います。また、すべてのSSL企業がこのアプローチをサポートしているかどうかもわかりません。
JanBühler、2015

8
証明書が別の場所で生成された場合、回答が役に立たないと思います。IISは、秘密キー自体を生成して保持することを期待しています。これは、オプションではない場合もあります。
staticsan

8

.keyファイルと.pemファイルから.pfxファイルを作成しました。

このような openssl pkcs12 -inkey rootCA.key -in rootCA.pem -export -out rootCA.pfx


1
これは基本的に私が使用したコマンドと同じですが、opensslの前にwinptyを追加する必要があります(たとえば、winpty openssl pkcs12 ....)。
smoore4

-exportスイッチは必要ありませんでした。
20:35のmmell

7

https://msdn.microsoft.com/en-us/library/ff699202.aspx

((記事からの関連する引用は以下です))

次に、デプロイメントの署名に使用する.pfxファイルを作成する必要があります。コマンドプロンプトウィンドウを開き、次のコマンドを入力します。

PVK2PFX –pvk yourprivatekeyfile.pvk –spc yourcertfile.cer –pfx yourpfxfile.pfx –po yourpfxpassword

どこ:

  • pvk-yourprivatekeyfile.pvkは、手順4で作成した秘密鍵ファイルです。
  • spc-yourcertfile.cerは、手順4で作成した証明書ファイルです。
  • pfx-yourpfxfile.pfxは、作成する.pfxファイルの名前です。
  • po-yourpfxpasswordは、.pfxファイルに割り当てるパスワードです。Visual Studioでプロジェクトに.pfxファイルを初めて追加するときに、このパスワードの入力を求められます。

(オプションで(OPではなく、将来の読者のために)、. cerおよび.pvkファイルを最初から作成できます)(上記の前にこれを行います)。mm / dd / yyyyは開始日と終了日のプレースホルダーです。完全なドキュメントについては、msdnの記事を参照してください。

makecert -sv yourprivatekeyfile.pvk -n "CN=My Certificate Name" yourcertfile.cer -b mm/dd/yyyy -e mm/dd/yyyy -r

6

makecertツールを使用する必要があります。

コマンドプロンプトをadminとして開き、次のように入力します。

makecert -sky exchange -r -n "CN=<CertificateName>" -pe -a sha1 -len 2048 -ss My "<CertificateName>.cer"

場所<CertifcateName>=作成する証明書の名前。

次に、[スタート]メニューに「certmgr.msc」と入力し、[個人]> [証明書]をクリックして、管理コンソールの証明書マネージャースナップインを開くと、証明書が利用可能になります。

こちらが記事です。

https://azure.microsoft.com/documentation/articles/cloud-services-certs-create/


3
できません。エクスポートウィザードで、pfxオプションがグレー表示される
jlp '10

私の証明書は、証明書マネージャで入手できます。私ができないことは、pfx形式にエクスポートすることです。コマンドライン命令は何をしますか?
jlp

アドバイスに従って証明書を作成し、それが機能するかどうか私に知らせてください。おそらく5分ほどかかります。リンクされた記事は、起こっていることの完全な説明を提供します。
BentOnCoding、2011年

それは私が探しているものではありません。証明書を作りたくありません。私自身。証明書機関から証明書を2つのファイルで購入しました。OpenSSLツールを使用したい
jlp '13

5

私はあなたの要件とのリンクを得ました。OpenSSLを使用してCRTファイルとKEYファイルをPFXに結合する

上記のリンクからの抜粋:

最初に既存の.crtファイルからルートCA証明書を抽出する必要があります。これは後で必要になるためです。.crtを開き、[証明のパス]タブをクリックします。

一番上の証明書(この場合はVeriSign)をクリックし、[証明書の表示]をクリックします。[詳細]タブを選択し、[ファイルにコピー]をクリックします…

Base-64エンコードされたX.509(.CER)証明書を選択します。それをrootca.cerまたは同様のものとして保存します。他のファイルと同じフォルダに配置します。

rootca.cerからrootca.crtに名前を変更します。フォルダーに3つのファイルがあり、そこからPFXファイルを作成できます。

ここでOpenSSLが必要です。Windowsにダウンロードしてインストールするか、OSXでターミナルを開くだけです。

編集:

  1. 証明書のインストール方法に関する段階的な情報のサポートリンクがあります。

  2. インストールが成功したら、証明書をエクスポートし、.pfx形式を選択し、秘密鍵を含めます。

    重要な注意: .pfx形式で証明書をエクスポートするには、証明書を要求したのと同じマシンで手順を実行する必要があります

  3. インポートされたファイルはサーバーにアップロードできます。


1
説明していただけますか?どのように正確にCERTファイルからPFXファイルを作成しましたか?どこで、どのようにKEYファイルを作成したのか、すべて混乱しています。

3
ここから、あなたがどのようにKEYファイルを取得したかを親切に説明できますか?例:openssl pkcs12 -inkey example.com.key -in example.com.crt -export -out example.com.pfx

5

これは、*。cerを* .pfxファイルに変換する最も簡単な方法です。

DigiCertからポータブル証明書コンバータをダウンロードするだけです:https ://www.digicert.com/util/pfx-certificate-management-utility-import-export-instructions.htm

それを実行し、ファイルを選択して* .pfxを取得します!!


すごい!これはうまくいきました。.p7bファイルがありました。GoDaddyが提供する手順を使用して、それをIISにインポートしました。次に、.cerファイル(キーファイル)を生成し、このユーティリティを使用してpfxを取得しました。
Shiva Naru

Digicertツールは、最高のバーです。
L_7337

1
OPがこのツールを使用して実行したいことを実行する方法がわかりません。証明書のエクスポートのみを許可しているようです-キーとcerファイルからは作成できません。
NickG 2017

1
おそらく最初に証明書を「インストール」してから、SSLタブに戻って「エクスポート」して実際のpfxファイルを取得する必要があることに言及する価値があるでしょう。
access_granted 2017

3

証明書がMMCで利用可能であると言うとき、「現在のユーザー」または「ローカルコンピューター」で利用できますか?ローカルコンピューターの下にある場合にのみ秘密キーをエクスポートできることがわかりました。

証明書のスナップインをMMCに追加して、証明書を管理するアカウントを選択できます。ローカルコンピュータを選択します。証明書がそこにない場合は、ストアを右クリックし、[すべてのタスク]> [インポート]を選択してインポートします。

ローカルコンピューターバージョンの証明書スナップインでインポートした証明書に移動します。証明書を右クリックし、[すべてのタスク]> [エクスポート]を選択します。エクスポートウィザードの2ページ目で、秘密鍵をエクスポートするかどうかを尋ねるメッセージが表示されます。はいを選択します。これで、PFXオプションのみが使用可能になります([いいえ]を選択し、秘密キーをエクスポートするオプションが[現在のユーザー]アカウントで使用できない場合は、グレー表示されます)。

PFXファイルのパスワードを設定し、次に証明書名を設定するように求められます。


1

私は同じ問題を抱えていました。私の問題は、拡張SSL検証プロセスが完了する前に、最初の証明書要求を生成したコンピューターがクラッシュしたことでした。新しい秘密鍵を生成してから、更新された証明書を証明書プロバイダーからインポートする必要がありました。秘密鍵がコンピューターに存在しない場合、証明書をpfxとしてエクスポートできません。それらのオプションはグレー表示されます。


1

(@rainabbaが言ったように)IISを使用して新しいCSRを生成するのがおそらく最も簡単ですが、中間証明書があると仮定すると、そこにいくつかのオンラインコンバータがあります-たとえば、https//www.sslshopper.com/ssl-converter。 html

これにより、別のプログラムをインストールしなくても、証明書と秘密キーからPFXを作成できます。


0

ほとんどの場合、証明書をPFX(秘密キーを含む)としてエクスポートできないのは、MMC / IISが秘密キー(CSRの生成に使用)を見つけられない、またはアクセスできないためです。これらは私がこの問題を修正するために従った手順です:

  • 管理者としてMMCを実行する
    • MMCを使用してCSRを生成します。この手順に従って、証明書をエクスポート可能にします。
  • CA(crt + p7b)から証明書を取得したら、それらをインポートします(Personal \ Certificates、およびIntermediate Certification Authority \ Certificates)
  • 重要:新しい証明書(Personal \ Certificates)All Tasks..Manage Private Keyを右クリックして、アカウントまたはEveryone(危険!)にアクセス許可を割り当てます。完了したら、以前の権限に戻ることができます。
  • これで、証明書を右クリックして[すべてのタスク..エクスポート]を選択すると、秘密キーを含む証明書をPFXファイルとしてエクスポートでき、Azureにアップロードできるようになります。

お役に立てれば!


私はすでにPersonal \ Certificatesに証明書を持っていますが、右クリックしても[Manage Private Key]が表示されません。私が取得するオプションは、「新しいキーで証明書を要求...」、「新しいキーで証明書を更新...」、および「エクスポート」です。
ガブリエリ

1
DigiCertのポータブル証明書コンバーターで修正しました:digicert.com/util/…–
Gabrielizalo

「CSRの生成」に失敗しました。すでに秘密鍵を持っている場合は、CSRを生成する必要はありません。元の質問を読んでください。
NickG 2017

0

これをインストールしたり、コマンドラインプログラムを追加したり、ダウンロードしたりすることについて、数人のユーザーが話していることを知っています...

個人的に私は怠惰で、これらすべてのメソッドが扱いにくくて遅いのがわかります。さらに、何もダウンロードしたくなくて、必要がない場合は正しいcmd行を見つけたくありません。

私の個人的なIISサーバーでの最善の方法は、RapidSSLOnlineを使用することです。これはサーバー上にあるツールであり、証明書と秘密キーをアップロードして、IISに直接インポートできるpfxファイルを生成できます。

リンクはこちら:https : //www.rapidsslonline.com/ssl-tools/ssl-converter.php

以下は、要求されたシナリオで使用される手順です。

  1. 現在のタイプを選択= PEM
  2. 変更= PFX
  3. 証明書をアップロード
  4. 秘密鍵をアップロードする
  5. ROOT CA証明書または中間証明書がある場合は、それらもアップロードします
  6. IISで使用される任意のパスワードを設定します
  7. reCaptchaをクリックして、ボットではないことを証明します
  8. 変換をクリックします

PFXをダウンロードして、IISのインポートプロセスで使用する必要があるのは、これで終わりです。

これが他の志を同じくする怠惰な技術者たちを助けることを願っています。


6
証明書を発行していないサードパーティのWebサイトに証明書をアップロードしても安全ですか?
Kunal

1
こんにちは、Rapid SSLはGeoTrustが所有していると思います。両方の当局が証明書を取得します。私の知る限り... 安全性に関してdigital.com/ssl-certificates/geotrust digital.com/ssl-certificates/RAPIDSSLは、証明書が外部システムによって生成され、まだ有効である必要があります。私の場合、90日ごとに更新する必要があるsslforfree.comを使用しましたが、特にデモサイトなどで低コストを支払うには少額の費用です
TheNerdyNerd

5
@Kunal:これはtest / dev証明書ファイルを取得する簡単な方法かもしれませんが、秘密鍵を別のパーティにアップロードすることは、安全な本番環境にとって一般的なことではありません。
ステファン

0

SSLForFreeのcfxファイルの場合、これはhttps://decoder.link/converterが最も簡単です。

PEM-> PKCS#12が選択されていることを確認し、証明書、ca_bundle、およびキーファイルをアップロードして変換します。パスワードを覚えてから、使用したパスワードを使用してアップロードし、バインディングを追加します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.