Bagaimana cara membuat file .pfx dari sertifikat dan kunci pribadi?

363

Saya perlu file .pfx untuk menginstal https di situs web di IIS.

Saya memiliki dua file terpisah: sertifikat (.cer atau pem) dan kunci pribadi (.crt) tetapi IIS hanya menerima file .pfx.

Saya jelas menginstal sertifikat dan tersedia di manajer sertifikat (mmc) tetapi ketika saya memilih Wisaya Ekspor Sertifikat, saya tidak bisa memilih format PFX (itu abu-abu)

Apakah ada alat untuk melakukan itu atau C # contoh melakukan itu secara terprogram?

jlp
sumber
2
kemungkinan rangkap dari Konversi sertifikat CERT / PEM ke sertifikat PFX
Daniel DiPaolo
1
benar, tetapi jawabannya tidak jelas dan tidak memperbaiki apa pun dalam kasus saya
jlp
@ alexl apakah ada versi windows?
jlp
OpenSL sepenuhnya tidak perlu dalam hampir semua kasus. Baru saja menambahkan jawaban saya (yang saya buat sebagai entri blog). Ironisnya adalah ketika Anda menghasilkan CSR sebagaimana dimaksud, Anda kemungkinan besar tidak akan membutuhkan PFX.
rainabba

Jawaban:

554

Anda harus menggunakan openssl.

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

File kunci hanyalah file teks dengan kunci pribadi Anda di dalamnya.

Jika Anda memiliki CA akar dan sertifikat perantara, maka sertakan juga menggunakan beberapa -inparams

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

Anda dapat menginstal openssl dari sini: openssl

jdehlin
sumber
11
"File kunci hanya file teks dengan kunci pribadi Anda di dalamnya." Benar, kecuali kalau tidak.
Casey
37
Terima kasih, saya juga akan menambahkan jika Anda memiliki root CA atau sertifikat intermiediate Anda dapat menambahkannya dengan memasok beberapa parameter -in :openssl pkcs12 -export -out domain.name.pfx -inkey domain.name.key -in domain.name.crt -in intermediate.crt -in rootca.crt
gerrytan
10
Melakukan pekerjaan untuk saya. Sebagai catatan kecil, menjalankan ini pada mesin Windows mengharuskan Anda untuk menjalankan openssl di prompt perintah Administrator.
Martin Costello
13
Dari mana Anda mendapatkan file kunci? Saya mendapat sertifikat SSL yang diterbitkan, tetapi saya tidak melihat keyfile di mana pun. Baru saja mendapatkan file p7b dan banyak file * .crt.
Knelis
11
Untuk menjalankan ini pada openssl 1.0.2m saya harus menentukan -certfile intermediate.crt -certfile rootca.crtsebelum saya diminta untuk melindungi .pfxdengan passphrase / kata sandi. Saya percaya ini mungkin karena .keytidak cocok dengan -infile tambahan yang menghasilkan pesan kesalahan "Tidak ada sertifikat cocok dengan kunci pribadi" yang saya dapatkan.
dragon788
36

Utilitas baris perintah Microsoft Pvk2Pfx tampaknya memiliki fungsi yang Anda butuhkan:

Pvk2Pfx (Pvk2Pfx.exe) adalah alat baris perintah yang menyalin informasi kunci publik dan kunci privat yang terdapat dalam file .spc, .cer, dan .pvk ke file Personal Information Exchange (.pfx).
http://msdn.microsoft.com/en-us/library/windows/hardware/ff550672(v=vs.85).aspx

Catatan: jika Anda membutuhkan / menginginkan / memilih solusi C #, maka Anda mungkin ingin mempertimbangkan untuk menggunakan http://www.bouncycastle.org/ api.

Seymour
sumber
1
-spc argumen untuk file
.cer
2
C: \ Program Files (x86) \ Windows Kits \ 10 \ bin \ 10.0.15063.0 \ x64 \ pvk2pfx.exe
Stefan Steiger
35

Jika Anda mencari GUI Windows, lihat DigiCert. Saya hanya menggunakan ini dan itu cukup sederhana.

Di bawah tab SSL, saya pertama kali Mengimpor Sertifikat. Kemudian setelah saya memilih Sertifikat saya dapat mengekspor sebagai PFX, baik dengan dan tanpa keyfile.

https://www.digicert.com/util

joelnet
sumber
15
Ketika saya melakukan ini, itu memberitahu saya saya tidak memiliki kunci pribadi yang diimpor di komputer saya. Yang mana yang benar.
Niels Brinch
6
@NielsBrinch Ketika saya melakukan ini, ini juga memberitahu saya bahwa saya tidak memiliki kunci pribadi yang diimpor di komputer saya. Berharap itu salah, ada di folder yang sama dengan sertifikat ...
aBertrand
@NielsBrinch Untuk mengatasi masalah ini, saya harus mengirimkan kembali CSR baru dan kemudian mengunduh sertifikat lagi ketika diproses, kunci pribadi disembunyikan di server / mesin tempat Anda membuat CSR aktif. Ini menyelesaikan pesan kesalahan itu.
Paddymac
Saya dapat merekomendasikan DigiCert berdasarkan beberapa tahun pengalaman dengan mereka.
mmell
Jangan lupa untuk memasukkan kunci pribadi di direktori root yang DigiCertUtil.exedapat dieksekusi. Paling mudah adalah dengan menyalinnya ke folder sertifikat.
Jonas
32

Anda TIDAK perlu openssl atau makecert atau semua itu. Anda juga tidak perlu kunci pribadi yang diberikan kepada Anda oleh CA Anda. Saya hampir dapat menjamin bahwa masalahnya adalah Anda berharap dapat menggunakan kunci dan file cer yang disediakan oleh CA Anda tetapi mereka tidak didasarkan pada "cara IIS". Saya sangat lelah melihat info yang buruk dan sulit di sini sehingga saya memutuskan untuk membuat blog subjek dan solusinya. Ketika Anda menyadari apa yang sedang terjadi dan melihat betapa mudahnya, Anda pasti ingin memeluk saya :)

Sertifikasi SSL untuk IIS dengan PFX sekali dan untuk semua - SSL dan IIS Dijelaskan - http://rainabba.blogspot.com/2014/03/ssl-certs-for-iis-with-pfx-once-and-for.html

Gunakan IIS "Sertifikat Server" untuk "Menghasilkan Permintaan Sertifikat" (rincian permintaan ini berada di luar ruang lingkup artikel ini tetapi detail itu sangat penting). Ini akan memberi Anda CSR yang disiapkan untuk IIS. Anda kemudian memberikan CSR itu ke CA Anda dan meminta sertifikat. Kemudian Anda mengambil file CER / CRT yang mereka berikan kepada Anda, kembali ke IIS, "Lengkapi Permintaan Sertifikat" di tempat yang sama dengan yang Anda buat permintaan. Mungkin meminta .CER dan Anda mungkin memiliki .CRT. Mereka adalah hal yang sama. Cukup ganti ekstensi atau gunakan .drop-down ekstensi untuk memilih .CRT Anda. Sekarang berikan "nama ramah" yang tepat (*. DomainAnda.com, domainAnda.com, foo.AndaDomain.com, dll.) INI PENTING! Ini HARUS cocok dengan pengaturan CSR Anda dan untuk apa CA Anda berikan. Jika Anda meminta wildcard, CA Anda harus menyetujui dan membuat wildcard dan Anda harus menggunakannya. Jika CSR Anda dibuat untuk foo.domainanda.com, Anda HARUS memberikan hal yang sama pada langkah ini.

rainabba
sumber
2
Pertanyaan dibuka dengan: "Saya perlu file .pfx untuk menginstal https di situs web di IIS."
rainabba
34
Bisakah Anda memasukkan konten yang relevan dari posting Anda ke dalam jawaban Anda? Dengan begitu, jawabannya tetap relevan meski blog Anda hilang. Anda masih dapat menautkan ke blog Anda. Karena itu, ada 0 informasi yang berguna dalam konten jawabannya.
Deanna
16
Ini adalah cara paling sederhana jika Anda meminta sertifikat baru, namun itu tidak akan berfungsi jika Anda sudah memiliki sertifikat dan / atau kunci pribadi (misalnya yang sebelumnya Anda gunakan dengan apache) karena permintaan penandatanganan sertifikat IIS akan menghasilkan pribadi baru kunci. Saya menemukan aspek IIS ini benar-benar menjengkelkan karena semua "permintaan lengkap" lakukan adalah menggabungkan kunci pribadi dengan sertifikat publik untuk menghasilkan pfx, mengapa hal itu tidak bisa begitu saja menerimanya sebagai file berformat PEM terpisah yang tahu.
Chris Chilvers
2
Sementara saya menghargai bahwa solusi Anda kemungkinan besar "cara yang tepat untuk melakukan" hal-hal, saya pikir itu lebih banyak upaya daripada campur tangan dengan openssl - satu alat, satu panggilan baris perintah, satu kata sandi, selesai. Saya juga tidak tahu apakah semua perusahaan ssl mendukung pendekatan ini.
Jan Bühler
8
Saya khawatir jawaban Anda tidak membantu jika sertifikat dihasilkan di tempat lain. Oke, IIS berharap untuk menghasilkan dan tetap menggunakan kunci privat itu sendiri - kadang-kadang itu bukan pilihan.
staticsan
8

Saya membuat file .pfx dari file .key dan .pem.

Seperti ini openssl pkcs12 -inkey rootCA.key -in rootCA.pem -export -out rootCA.pfx

Siim Nelis
sumber
1
Ini pada dasarnya adalah perintah yang sama yang saya gunakan, tetapi saya perlu menambahkan winpty sebelum openssl (misalnya, winpty openssl pkcs12 ....) saat menggunakan Git bash, yang merupakan solusi umum untuk openssl di windows.
smoore4
Saya tidak perlu -exportsaklar.
mmell
7

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

((kutipan yang relevan dari artikel di bawah))

Selanjutnya, Anda harus membuat file .pfx yang akan Anda gunakan untuk menandatangani penyebaran Anda. Buka jendela Prompt Perintah, dan ketikkan perintah berikut:

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

dimana:

  • pvk - yourprivatekeyfile.pvk adalah file kunci pribadi yang Anda buat pada langkah 4.
  • spc - yourcertfile.cer adalah file sertifikat yang Anda buat pada langkah 4.
  • pfx - yourpfxfile.pfx adalah nama dari file .pfx yang akan dibuat.
  • po - yourpfxpassword adalah kata sandi yang ingin Anda tetapkan untuk file .pfx. Anda akan dimintai kata sandi ini saat Anda menambahkan file .pfx ke proyek di Visual Studio untuk pertama kalinya.

(Secara opsional (dan bukan untuk OP, tetapi untuk pembaca di masa mendatang), Anda dapat membuat file .cer dan .pvk dari awal) (Anda akan melakukan ini SEBELUM hal di atas). Perhatikan bahwa mm / hh / tttt adalah pengganti untuk tanggal mulai dan berakhir. lihat artikel msdn untuk dokumentasi lengkap.

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

Anda perlu menggunakan alat makecert.

Buka prompt perintah sebagai admin dan ketik berikut ini:

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

Di mana <CertifcateName>= nama sertifikat Anda untuk dibuat.

Kemudian Anda dapat membuka snap-in Certificate Manager untuk konsol manajemen dengan mengetik certmgr.msc di menu Start, klik personal> sertifikat> dan sertifikat Anda harus tersedia.

Ini sebuah artikel.

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

BentOnCoding
sumber
3
Saya tidak bisa. Dalam ekspor, opsi pfx panduan berwarna abu-abu
jlp
sertifikat saya tersedia di manajer sertifikat. Yang tidak bisa saya lakukan adalah mengekspor jika ke format pfx. Apa yang dilakukan instruksi baris perintah Anda?
jlp
Coba buat sertifikat seperti yang disarankan dan beri tahu saya jika berfungsi. Mungkin butuh 5 menit. Artikel yang ditautkan memberikan penjelasan lengkap tentang apa yang terjadi.
BentOnCoding
Bukan itu yang saya cari. Saya tidak ingin membuat sertifikat. diri. Saya membeli sertifikat dari otoritas sertifikat dalam 2 file. Saya lebih suka menggunakan alat OpenSSL
jlp
5

Saya mendapat tautan dengan kebutuhan Anda. Gabungkan File CRT dan KEY ke dalam PFX dengan OpenSSL

Ekstrak dari tautan di atas:

Pertama kita perlu mengekstrak sertifikat CA root dari file .crt yang ada, karena kita memerlukannya nanti. Jadi buka .crt dan klik pada tab Jalur Sertifikasi.

Klik sertifikat paling atas (Dalam hal ini VeriSign) dan tekan Lihat Sertifikat. Pilih tab Detail dan tekan Salin ke File ...

Pilih sertifikat Base-64 yang disandikan X.509 (.CER) Simpan sebagai rootca.cer atau yang serupa. Tempatkan di folder yang sama dengan file lainnya.

Ganti nama itu dari rootca.cer ke rootca.crt Sekarang kita harus memiliki 3 file di folder kita dari mana kita dapat membuat file PFX.

Di sinilah kita membutuhkan OpenSSL. Kami dapat mengunduh dan menginstalnya di Windows , atau cukup buka terminal di OSX.

EDIT:

  1. Ada tautan dukungan dengan informasi langkah demi langkah tentang cara menginstal sertifikat.

  2. Setelah berhasil menginstal, ekspor sertifikat, pilih .pfxformat, sertakan kunci pribadi.

    Catatan Penting :: Untuk mengekspor sertifikat dalam format .pfx Anda harus mengikuti langkah-langkah pada mesin yang sama dengan yang Anda minta sertifikat .

  3. File yang diimpor dapat diunggah ke server.

sudhAnsu63
sumber
1
Bisakah Anda jelaskan? bagaimana tepatnya Anda membuat file PFX dari file CERT? Di mana atau bagaimana Anda membuat file KUNCI tolong semua membingungkan.
3
Bisakah Anda menjelaskan dari sini bagaimana mereka KUNCI mengajukan Anda? misalnya:openssl pkcs12 -inkey example.com.key -in example.com.crt -export -out example.com.pfx
5

Ini DENGAN JAUH cara termudah untuk mengkonversi file * .cer ke * .pfx:

Cukup unduh konverter sertifikat portabel dari DigiCert: https://www.digicert.com/util/pfx-certificate-management-utility-import-export-instructions.htm

Jalankan, pilih file dan dapatkan * .pfx Anda !!

pengguna1613797
sumber
Bagus! Ini berhasil. Saya punya file .p7b. Saya mengimpornya ke IIS saya menggunakan instruksi yang disediakan oleh GoDaddy. Kemudian dihasilkan file .cer (file kunci) dan kemudian menggunakan utilitas ini untuk mendapatkan pfx.
Shiva Naru
Alat Digicert adalah bar yang terbaik.
L_7337
1
Saya tidak bisa melihat cara melakukan apa yang ingin OP lakukan dengan menggunakan alat ini. Tampaknya hanya memungkinkan Anda untuk mengekspor sertifikat - tidak membuatnya dari file kunci dan cer.
NickG
1
Mungkin perlu disebutkan bahwa Anda pertama kali harus "menginstal" sertifikat, dan kemudian kembali ke tab SSL dan "ekspor" untuk mendapatkan file pfx yang sebenarnya.
access_granted
3

Ketika Anda mengatakan sertifikat tersedia di MMC, apakah tersedia di bawah "Pengguna Saat Ini" atau "Komputer Lokal"? Saya menemukan bahwa saya hanya dapat mengekspor kunci privat jika berada di bawah Komputer Lokal.

Anda dapat menambahkan snap in untuk Sertifikat ke MMC dan memilih akun mana yang harus dikelola sertifikat. Pilih Komputer Lokal. Jika sertifikat Anda tidak ada di sana, impor dengan mengklik kanan toko dan pilih Semua Tugas> Impor.

Sekarang navigasikan ke sertifikat Anda yang diimpor di bawah versi Komputer Lokal dari sertifikat masuk. Klik kanan sertifikat dan pilih Semua Tugas> Ekspor. Halaman kedua panduan ekspor harus menanyakan apakah Anda ingin mengekspor kunci pribadi. Pilih Ya. Opsi PFX sekarang akan menjadi satu-satunya yang tersedia (berwarna abu-abu jika Anda memilih tidak dan opsi untuk mengekspor kunci pribadi tidak tersedia di bawah akun Pengguna Saat Ini).

Anda akan diminta untuk mengatur kata sandi untuk file PFX dan kemudian mengatur nama sertifikat.

Ryan Elkins
sumber
1

Saya mengalami masalah yang sama. Masalah saya adalah bahwa komputer yang menghasilkan permintaan sertifikat awal telah crash sebelum proses validasi ssl diperpanjang selesai. Saya perlu membuat kunci pribadi baru dan kemudian mengimpor sertifikat yang diperbarui dari penyedia sertifikat. Jika kunci pribadi tidak ada di komputer Anda maka Anda tidak dapat mengekspor sertifikat sebagai pfx. Opsi mereka diklik.

Bill Mahoney
sumber
1

Meskipun mungkin paling mudah untuk menghasilkan CSR baru menggunakan IIS (seperti kata @rainabba), dengan asumsi Anda memiliki sertifikat perantara, ada beberapa konverter online di luar sana - misalnya: https://www.sslshopper.com/ssl-converter. html

Ini memungkinkan Anda membuat PFX dari sertifikat dan kunci pribadi Anda tanpa harus menginstal program lain.

William
sumber
0

Dalam sebagian besar kasus, jika Anda tidak dapat mengekspor sertifikat sebagai PFX (termasuk kunci pribadi) adalah karena MMC / IIS tidak dapat menemukan / tidak memiliki akses ke kunci pribadi (digunakan untuk menghasilkan CSR). Ini adalah langkah-langkah yang saya ikuti untuk memperbaiki masalah ini:

  • Jalankan MMC sebagai Admin
    • Hasilkan CSR menggunakan MMC. Ikuti instruksi ini untuk membuat sertifikat dapat diekspor.
  • Setelah Anda mendapatkan sertifikat dari CA (crt + p7b), impor mereka (Pribadi \ Sertifikat, dan Otoritas Sertifikasi Menengah \ Sertifikat)
  • PENTING: Klik kanan sertifikat baru Anda (Pribadi \ Sertifikat) Semua Tugas..Kelola Kunci Pribadi, dan tetapkan izin untuk akun Anda atau Semua Orang (berisiko!). Anda dapat kembali ke izin sebelumnya setelah selesai.
  • Sekarang, klik kanan sertifikat dan pilih Semua Tugas..Ekspor, dan Anda harus dapat mengekspor sertifikat termasuk kunci pribadi sebagai file PFX, dan Anda dapat mengunggahnya ke Azure!

Semoga ini membantu!

Jose Parra
sumber
Saya sudah memiliki sertifikat saya di Personal \ Certificates, tetapi dengan Klik Kanan jangan muncul "Kelola Kunci Pribadi". Opsi yang saya dapatkan adalah: "Minta Sertifikat dengan kunci Baru ...", "Perbarui Sertifikat dengan kunci Baru ..." dan "Ekspor" ... Apakah Anda tahu apa yang saya lewatkan?
Gabrielizalo
1
Saya memperbaikinya dengan konverter sertifikat portabel dari DigiCert: digicert.com/util/…
Gabrielizalo
Anda gagal pada "menghasilkan CSR". Jika Anda sudah memiliki kunci pribadi, Anda tidak perlu membuat CSR. Silakan baca pertanyaan aslinya.
NickG
0

Saya tahu beberapa pengguna telah berbicara tentang menginstal ini dan itu dan menambahkan program baris perintah dan mengunduh ...

Secara pribadi saya malas dan menemukan semua metode ini rumit dan lambat, ditambah saya tidak ingin mengunduh apa pun dan menemukan garis cmd yang benar jika saya tidak perlu.

Cara terbaik bagi saya di server IIS pribadi saya adalah dengan menggunakan RapidSSLOnline. Ini adalah alat yang ada di server memungkinkan Anda untuk mengunggah sertifikat dan kunci pribadi Anda dan dapat menghasilkan file pfx untuk Anda yang dapat Anda impor langsung ke IIS.

Tautannya ada di sini: https://www.rapidsslonline.com/ssl-tools/ssl-converter.php

Di bawah ini adalah langkah-langkah yang digunakan untuk skenario yang diminta.

  1. Pilih Jenis Sekarang = PEM
  2. Ubah untuk = PFX
  3. Unggah sertifikat Anda
  4. Unggah kunci pribadi Anda
  5. Jika Anda memiliki ROOT CA cert atau sertifikat perantara, unggah juga
  6. Tetapkan kata sandi pilihan Anda, digunakan di IIS
  7. Klik reCaptcha untuk membuktikan bahwa Anda bukan bot
  8. Klik Konversi

Dan itu saja Anda harus memiliki PFX diunduh dan gunakan ini dalam proses Impor Anda di IIS.

Semoga ini bisa membantu orang-orang teknologi berpikiran malas lainnya.

TheNerdyNerd
sumber
6
Apakah aman untuk mengunggah sertifikat Anda di situs web pihak ketiga yang tidak mengeluarkan Anda sertifikat?
Kunal
1
Hai, ada SSL Cepat. Saya percaya ini dimiliki oleh GeoTrust. Keduanya merupakan Otoritas dalam mendapatkan sertifikat. Sejauh yang saya tahu ... digital.com/ssl-certificates/geotrust digital.com/ssl-certificates/RAPIDSSL berkenaan dengan keselamatan saya pikir ini akan menjadi eksploitasi minimal karena sertifikat Anda akan dihasilkan oleh sistem eksternal dan masih harus valid. Dalam kasus saya, saya menggunakan sslforfree.com yang harus diperbarui setiap 90 hari, tetapi itu adalah harga kecil untuk membayar biaya lebih rendah terutama untuk situs demo saya dll
TheNerdyNerd
5
@Kunal: Ini mungkin cara sederhana untuk mendapatkan file sertifikat uji / dev, tetapi mengunggah kunci pribadi Anda ke pihak lain adalah nogo umum untuk lingkungan produksi yang aman.
Stefan
0

Untuk file cfx dari SSLForFree saya menemukan ini https://decoder.link/converter termudah.

Cukup pastikan PEM -> PKCS # 12 dipilih, lalu unggah sertifikat, ca_bundle, dan file kunci, lalu konversi. Ingat kata sandi, lalu unggah dengan kata sandi yang Anda gunakan dan tambahkan bindings.

Pete Herc
sumber