Sertifika ve özel anahtardan .pfx dosyası nasıl oluşturulur?


363

IIS'de web sitesine https yüklemek için .pfx dosyasına ihtiyacım var.

İki ayrı dosyam var: sertifika (.cer veya pem) ve özel anahtar (.crt) ancak IIS yalnızca .pfx dosyalarını kabul eder.

Açıkçası sertifikayı yükledim ve sertifika yöneticisinde (mmc) kullanılabilir ancak Sertifika Verme Sihirbazı'nı seçtiğimde PFX biçimini seçemiyorum (gri renkte)

Bunu yapmak için herhangi bir araç var mı ya da programlı olarak C # örnekleri var mı?



1
doğru, ama cevabı net değil ve benim durumumda bir şey
düzeltmiyor

@alexl Windows sürümü var mı?
jlp


Openssl neredeyse tüm durumlarda tamamen gereksizdir. Cevabımı ekledim (sağlamak için bir blog girişi oluşturuyorum). İronik olan, CSR'yi amaçlandığı gibi oluşturduğunuzda, muhtemelen PFX'e bile ihtiyacınız olmayacağıdır.
Şubat'ta rainabba 0:23

Yanıtlar:


554

Openssl kullanmanız gerekecek.

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

Anahtar dosya, içinde özel anahtarınızın bulunduğu bir metin dosyasıdır.

Kök CA'nız ve ara sertifikalarınız varsa, bunları birden çok -inparametre kullanarak da ekleyin

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

Openssl'i buradan yükleyebilirsiniz: openssl


11
"Anahtar dosya sadece içinde özel anahtarınız olan bir metin dosyasıdır." Doğru değil.
Casey

37
Teşekkürler, bir kök CA veya geçici sertifika varsa da ekleyeceğim, birden çok -in parametresi sağlayarak ekleyebilirsiniz :openssl pkcs12 -export -out domain.name.pfx -inkey domain.name.key -in domain.name.crt -in intermediate.crt -in rootca.crt
gerrytan

10
İşi benim için yaptı. Küçük bir not olarak, bunu bir Windows makinesinde çalıştırmak bir Administrator komut isteminde openssl çalıştırmanızı gerektirir.
Martin Costello

13
Anahtar dosyasını nereden alıyorsunuz? Bir SSL sertifikası aldım, ancak hiçbir yerde bir anahtar dosyası göremiyorum. Sadece bir p7b dosyası ve bir sürü * .crt dosyası var.
Knelis

11
Bunun openssl 1.0.2m üzerinde çalışmasını sağlamak için bir parola / parola ile -certfile intermediate.crt -certfile rootca.crtkorumak için istendi önce belirtmek zorunda kaldı .pfx. Bunun büyük olasılıkla alıyorum "Hiçbir sertifika özel anahtar eşleşiyor" hata iletisiyle sonuçlanan .keyek -indosyaları eşleşmediğini düşünüyorum .
dragon788

36

Microsoft Pvk2Pfx komut satırı yardımcı programı, ihtiyacınız olan işlevselliğe sahip gibi görünüyor:

Pvk2Pfx (Pvk2Pfx.exe), .spc, .cer ve .pvk dosyalarında bulunan genel anahtar ve özel anahtar bilgilerini Kişisel Bilgi Değişimi (.pfx) dosyasına kopyalayan bir komut satırı aracıdır.
http://msdn.microsoft.com/en-us/library/windows/hardware/ff550672(v=vs.85).aspx

Not: Bir C # çözümüne ihtiyacınız varsa / isterseniz / tercih ediyorsanız, http://www.bouncycastle.org/ api'yi kullanmayı düşünebilirsiniz .


1
dosya için
spsp

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

35

Bir Windows GUI arıyorsanız, DigiCert'e bakın. Ben sadece bunu kullandım ve oldukça basitti.

SSL sekmesi altında, önce Sertifikayı İçe Aktardım. Daha sonra Sertifikayı seçtiğimde, hem anahtar dosyasıyla hem de anahtar dosyası olmadan PFX olarak dışa aktarabiliyordum.

https://www.digicert.com/util


15
Bunu yaptığımda, bilgisayarımda özel anahtarın alınmadığını söylüyor. Hangisi doğru.
Niels Brinch

6
@NielsBrinch Bunu yaptığımda, bilgisayarımda özel anahtarın alınmadığını da söylüyor. Bunun yanlış olmasını bekle, sertifika ile aynı klasörde ...
aBertrand

@NielsBrinch Bu sorunu çözmek için, yeni bir CSR'yi yeniden göndermem ve ardından işlendiğinde sertifikayı tekrar indirmem gerekiyordu, özel anahtar CSR'yi oluşturduğunuz sunucuda / makinede gizlendi. Bu hata mesajını çözdü.
Paddymac

Onlarla uzun yıllara dayanan deneyime dayanarak DigiCert'i tavsiye edebilirim.
mmell

Özel anahtarı DigiCertUtil.exeyürütülebilir dosyanın kök dizinine eklemeyi unutmayın . En kolayı sadece sertifika klasörüne kopyalamaktır.
Jonas

32

Openssl, makecert veya bunlardan herhangi birine ihtiyacınız YOKTUR. Ayrıca CA'nız tarafından verilen kişisel anahtara da ihtiyacınız yoktur. Neredeyse sorunun, CA'nız tarafından sağlanan anahtar ve cer dosyalarını kullanabileceğinizi garanti edebilirim, ancak bunlar "IIS yoluna" dayanmıyor. Burada kötü ve zor bilgileri görmekten çok yoruldum ve konuyu ve çözümü bloglamaya karar verdim. Neler olduğunu fark edip ne kadar kolay olduğunu görünce bana sarılmak isteyeceksiniz :)

PFX'li IIS için bir kez ve herkes için SSL Sertifikaları - SSL ve IIS Açıklaması - http://rainabba.blogspot.com/2014/03/ssl-certs-for-iis-with-pfx-once-and-for.html

"Sertifika İsteği Oluştur" için IIS "Sunucu Sertifikaları" kullanıcı arabirimini kullanın (bu isteğin ayrıntıları bu makalenin kapsamı dışındadır, ancak bu ayrıntılar kritiktir). Bu size IIS için hazırlanmış bir CSR verecektir. Daha sonra bu CSR'yi CA'nıza verir ve bir sertifika istersiniz. Sonra size verdikleri CER / CRT dosyasını alırsınız, IIS'ye geri dönersiniz, "Sertifika İsteğini Tamamla" isteği oluşturduğunuz yerde. Bir .CER isteyebilir ve .CRT'niz olabilir. Aynı şey. Sadece uzantıyı değiştirin veya .uzantısı seçin .CRT'nizi seçin. Şimdi uygun bir "kolay ad" (* .etkialaniniz.com, alanadiniz.com.tr, foo.alanadiniz.com.tr vb.) BU ÖNEMLİDİR! Bu, CSR'yi ne ayarladığınızla ve CA'nızın size sağladığı ile eşleşmelidir. Bir joker karakter istediyseniz, CA'nız bir joker karakteri onaylamış ve oluşturmuş olmalı ve bunu kullanmalısınız. CSR'niz foo.alanadiniz.com.tr için oluşturulduysa, bu adımda aynısını sağlamanız GEREKİR.


2
Soru şu şekilde açıldı: "IIS'de web sitesine https yüklemek için .pfx dosyasına ihtiyacım var."
Şubat'ta rainabba

34
Lütfen gönderinizin ilgili içeriğini cevabınıza koyabilir misiniz? Bu şekilde, blogunuz kaybolsa bile cevap hala geçerlidir. Yine de blogunuza bağlantı verebilirsiniz. Olduğu gibi, cevabın içeriğinde 0 yararlı bilgi vardır.
Deanna

16
Bu, yeni bir sertifika talep etmenin en basit yoludur, ancak zaten bir sertifikanız ve / veya özel anahtarınız (örneğin, daha önce apache ile kullandığınız bir anahtarınız) varsa çalışmaz, çünkü IIS'nin sertifika imzalama isteği yeni bir gizli oluşturur IIS'nin bu yönünü gerçekten can sıkıcı buluyorum, çünkü tüm "tam istek" yaptığı bir pfx üretmek için özel anahtarı genel sertifikayla birleştiriyor, neden bunları bilen ayrı PEM biçimli dosyalar olarak kabul edemiyordu.
Chris Chilvers

2
Çözümünüzün büyük olasılıkla "yapmanın doğru yolu" olduğunu takdir etsem de, bunun opensl - bir araç, bir komut satırı çağrısı, bir şifre ile uğraşmaktan daha fazla çaba olduğunu düşünüyorum. Ayrıca tüm SSL şirketlerinin bu yaklaşımı destekleyip desteklemediğini de bilmiyorum.
Jan Bühler

8
Korkarım, sertifika başka bir yerde oluşturulmuşsa cevabınız yardımcı olmaz. Tamam, IIS özel anahtarın kendisini oluşturmayı ve bu anahtarda kalmayı bekliyor - bazen bu bir seçenek değil.
staticsan

8

.Key ve .pem dosyalarından .pfx dosyası oluşturdum.

Bunun gibi openssl pkcs12 -inkey rootCA.key -in rootCA.pem -export -out rootCA.pfx


1
Bu temelde kullandığım komutun aynısıdır, ancak windows üzerinde openssl için ortak bir çözüm olan Git bash'ı kullanırken, openssl'den önce winpty (örn., Winpty openssl pkcs12 ....) eklemem gerekiyordu.
smoore4

-exportDüğmeye ihtiyacım yoktu .
mmell

7

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

((makaleden alakalı alıntılar aşağıdadır))

Ardından, dağıtımlarınızı imzalamak için kullanacağınız .pfx dosyasını oluşturmanız gerekir. Bir Komut İstemi penceresi açın ve aşağıdaki komutu yazın:

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

nerede:

  • pvk - yourprivatekeyfile.pvk, 4. adımda oluşturduğunuz özel anahtar dosyasıdır.
  • spc - yourcertfile.cer, 4. adımda oluşturduğunuz sertifika dosyasıdır.
  • pfx - yourpfxfile.pfx, oluşturulacak .pfx dosyasının adıdır.
  • po - yourpfxpassword, .pfx dosyasına atamak istediğiniz paroladır. .Pfx dosyasını Visual Studio'daki bir projeye ilk kez eklediğinizde bu parolayı girmeniz istenir.

(İsteğe bağlı olarak (ve OP için değil, gelecekteki okuyucular için), sıfırdan .cer ve .pvk dosyasını oluşturabilirsiniz) (bunu yukarıdan ÖNCE yaparsınız). Aa / gg / yyyy'nin başlangıç ​​ve bitiş tarihleri ​​için yer tutucular olduğunu unutmayın. tam dokümantasyon için msdn makalesine bakın.

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

6

Makecert aracını kullanmanız gerekir.

Yönetici olarak bir komut istemi açın ve aşağıdakileri yazın:

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

Nerede <CertifcateName> = oluşturulacak sertifikanızın adı.

Ardından Başlat menüsüne certmgr.msc yazarak yönetim konsolu Sertifika Yöneticisi ek bileşenini açıp kişisel> sertifikalar> seçeneğini tıkladığınızda sertifikanız hazır olmalıdır.

İşte bir makale.

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


3
Yapamam. İhracat sihirbazında pfx seçeneği gri
jlp

Sertifikam sertifika yöneticisinde mevcuttur. Ne yapamam pfx biçimine verme. Komut satırı talimatınız ne yapıyor?
jlp

Sertifikayı önerildiği gibi oluşturmayı deneyin ve çalışıp çalışmadığını bana bildirin. Muhtemelen 5 dakika sürecektir. Bağlantılı makale neler olup bittiğine dair tam bir açıklama vermektedir.
BentOnCoding

Aradığım şey bu değil. Sertifika vermek istemiyorum. kendim. 2 dosyada cert otoritesinden cert aldım. OpenSSL aracını kullanmayı tercih ederim
jlp

5

İhtiyacınız olan bir bağlantı var. OpenSSL ile CRT ve KEY Dosyalarını PFX'e Birleştirin

Yukarıdaki bağlantıdan alıntılar:

Öncelikle, kök CA sertifikasını mevcut .crt dosyasından çıkarmamız gerekiyor, çünkü buna daha sonra ihtiyacımız var. .Crt dosyasını açın ve Sertifika Yolu sekmesine tıklayın.

En üstteki sertifikayı tıklayın (bu durumda VeriSign) ve Sertifikayı Görüntüle'ye tıklayın. Ayrıntılar sekmesini seçin ve Dosyaya Kopyala… seçeneğine basın.

Base-64 kodlu X.509 (.CER) sertifikasını seçin. Rootca.cer veya benzeri bir şey olarak kaydedin. Diğer dosyalarla aynı klasöre yerleştirin.

Şimdi rootca.cer'den rootca.crt olarak yeniden adlandırın. Klasörümüzde PFX dosyası oluşturabileceğimiz 3 dosya olmalı.

Burada OpenSSL'ye ihtiyacımız var. Biz Ya indirme ve Windows üzerinde kurmak veya OSX üzerinde basitçe açık terminali.

DÜZENLE:

  1. Sertifikanın nasıl kurulacağına ilişkin adım adım bilgileri içeren bir destek bağlantısı vardır.

  2. Başarıyla yüklendikten sonra sertifikayı dışa aktarın, .pfxformatı seçin , özel anahtarı ekleyin.

    Önemli Not:: Sertifikayı .pfx biçiminde dışa aktarmak için, sertifikayı istediğiniz makinede bulunan adımları izlemeniz gerekir .

  3. İçe aktarılan dosya sunucuya yüklenebilir.


1
Açıklayabilir misin? PFX dosyasını CERT dosyasından nasıl oluşturdunuz? KEY dosyasını nerede veya nasıl yaptınız, lütfen hepsi kafa karıştırıcı.

3
Buradan aldığınız ANAHTAR dosyasını nasıl açıklayabilir misiniz? örneğin:openssl pkcs12 -inkey example.com.key -in example.com.crt -export -out example.com.pfx

5

Bu, * .cer'i * .pfx dosyalarına dönüştürmenin en kolay yoludur.

Taşınabilir sertifika dönüştürücüsünü DigiCert'ten indirin: https://www.digicert.com/util/pfx-certificate-management-utility-import-export-instructions.htm

Yürütün, bir dosya seçin ve * .pfx !!


Harika! Bu işe yaradı. .P7b dosyasını aldım. GoDaddy tarafından sağlanan talimatları kullanarak IIS'ye aktardım. Sonra .cer dosyasını (anahtar dosyası) oluşturdu ve sonra bu yardımcı programı pfx'i almak için kullandı.
Shiva Naru

Digicert aracı en iyisidir.
L_7337

1
OP'nin bu aracı kullanarak ne yapmak istediğini göremiyorum. Yalnızca sertifikaları dışa aktarmanıza izin veriyor gibi görünüyor - anahtar ve cer dosyalarından oluşturmaz.
NickG

1
Muhtemelen, sertifikayı "yüklemeniz" ve ardından SSL sekmesine geri dönmeniz ve gerçek pfx dosyasını elde etmek için "dışa aktarmanız" gerektiğini belirtmek gerekir.
28_17

3

Sertifikanın MMC'de kullanılabilir olduğunu söylediğinizde, "Geçerli Kullanıcı" veya "Yerel Bilgisayar" altında kullanılabilir mi? Özel anahtarı yalnızca Yerel Bilgisayar altındaysa dışa aktarabildiğimi fark ettim.

MMC'ye Sertifikalar ek bileşenini ekleyebilir ve hangi hesabı sertifikalarını yönetmesi gerektiğini seçebilirsiniz. Yerel Bilgisayar'ı seçin. Sertifikanız orada değilse, depoyu sağ tıklatıp Tüm Görevler> İçe Aktar'ı seçerek sertifikayı alın.

Şimdi, sertifika ek bileşeninin Yerel Bilgisayar sürümü altında içe aktarılan sertifikanıza gidin. Sertifikayı sağ tıklayın ve Tüm Görevler> Dışa Aktar'ı seçin. Dışa aktarma sihirbazının ikinci sayfasında özel anahtarı dışa aktarmak isteyip istemediğiniz sorulmalıdır. Evet'i seçin. PFX seçeneği artık kullanılabilir olan tek seçenek olacaktır (hayır seçeneğini belirlerseniz ve özel anahtarı dışa aktarma seçeneği Geçerli Kullanıcı hesabı altında kullanılamazsa gri renktedir).

PFX dosyası için bir parola ayarlamanız ve ardından sertifika adını ayarlamanız istenir.


1

Aynı sorunu yaşıyordum. Benim sorunum, genişletilmiş ssl doğrulama işlemi tamamlanmadan önce ilk sertifika isteği oluşturan bilgisayar çökmüştü. Yeni bir özel anahtar oluşturmanız ve ardından güncellenmiş sertifikayı sertifika sağlayıcısından içe aktarmam gerekiyordu. Bilgisayarınızda özel anahtar yoksa, sertifikayı pfx olarak dışa aktaramazsınız. Seçenek gri renktedir.


1

IIS kullanarak yeni bir CSR oluşturmak muhtemelen en kolay olsa da (@rainabba gibi), ara sertifikalara sahip olduğunuzu varsayarsak, orada bazı çevrimiçi dönüştürücüler vardır - örneğin: https://www.sslshopper.com/ssl-converter. html

Bu, başka bir program yüklemenize gerek kalmadan sertifikanızdan ve özel anahtarınızdan bir PFX oluşturmanıza olanak tanır.


0

Çoğu durumda, sertifikayı PFX olarak dışa aktaramıyorsanız (özel anahtar dahil), MMC / IIS'nin özel anahtarı (CSR'yi oluşturmak için kullanılır) bulamıyor / erişememesidir. Bu sorunu gidermek için izlediğim adımlar şunlardır:

  • MMC'yi Yönetici olarak çalıştır
    • MMC kullanarak CSR oluşturun. Sertifikayı dışa aktarılabilir hale getirmek için bu talimatları izleyin .
  • Sertifikayı CA'dan (crt + p7b) aldıktan sonra, içe aktarın (Kişisel \ Sertifikalar ve Ara Sertifika Yetkilisi \ Sertifikalar)
  • ÖNEMLİ: Yeni sertifikanızı (Kişisel \ Sertifikalar) Tüm Görevler'i sağ tıklayın..Özel Anahtarı Yönetin ve hesabınıza veya Herkes'e (riskli!) İzinler atayın. İşiniz bittiğinde önceki izinlere geri dönebilirsiniz.
  • Şimdi, sertifikayı sağ tıklatıp Tüm Görevler'i seçin. Dışa aktardığınızda, sertifikayı özel anahtar da dahil olmak üzere PFX dosyası olarak dışa aktarabilmeniz ve Azure!

Bu yardımcı olur umarım!


Kişisel \ Sertifikalar bölümünde zaten sertifikam var, ancak Sağ Tıklama ile "Özel Anahtarı Yönet" görünmüyor. Aldığım seçenekler şunlardır: "Yeni anahtarla Sertifika İste ...", "Yeni anahtarla Sertifikayı Yenile ..." ve "Dışa Aktar" ... Eksik olduğum hakkında bir fikrin var mı?
Gabrielizalo

1
DigiCert'in taşınabilir sertifika dönüştürücüsü ile düzelttim: digicert.com/util/…
Gabrielizalo

"CSR oluşturma" da başarısız oldunuz. Özel anahtarınız zaten varsa, bir CSR oluşturmanız gerekmez. Lütfen orijinal soruyu okuyun.
NickG

0

SSLForFree'den cfx dosyaları için bunu https://decoder.link/converter buluyorum en kolay olduğunu düşünüyorum.

PEM -> PKCS # 12'nin seçili olduğundan emin olun, sonra sertifikayı, ca_bundle ve anahtar dosyalarını yükleyin ve dönüştürün. Parolayı hatırlayın, sonra kullandığınız parolayla yükleyin ve bağlantı ekleyin.


-1

Biliyorum birkaç kullanıcı bu ve bu yükleme ve komut satırı programları ekleme ve indirme hakkında konuştum ...

Şahsen tembelim ve tüm bu yöntemleri hantal ve yavaş buluyorum, ayrıca bir şey indirmek istemiyor ve doğru cmd çizgilerini bulmak istemiyorum.

Kişisel IIS sunucumda benim için en iyi yol RapidSSLOnline kullanmaktır. Bu, sunucuda bulunan ve sertifikanızı ve özel anahtarınızı yüklemenizi sağlayan ve doğrudan IIS'ye aktarabileceğiniz bir pfx dosyası oluşturabilen bir araçtır.

Bağlantı burada: https://www.rapidsslonline.com/ssl-tools/ssl-converter.php

Aşağıda istenen senaryo için kullanılan adımlar verilmiştir.

  1. Mevcut Türü Seçin = PEM
  2. = PFX için değişiklik
  3. Sertifikanızı yükleyin
  4. Özel anahtarınızı yükleyin
  5. ROOT CA sertifikanız veya ara sertifikalarınız varsa bunları da yükleyin
  6. IIS'de kullanılan, seçtiğiniz bir parola belirleyin
  7. Bot olmadığınızı kanıtlamak için reCaptcha'yı tıklayın
  8. Dönüştür'ü tıklayın

İşte bu yüzden bir PFX indirmeli ve bunu IIS'deki İçe Aktarma işleminizde kullanmalısınız.

Umarım bu diğer fikirli, tembel teknoloji insanlarına yardımcı olur.


6
Sertifikanızı size sertifika vermeyen üçüncü taraf bir web sitesine yüklemek güvenli midir?
Kunal

1
Merhaba, GeoTrust'a ait olduğunu düşündüğüm hızlı SSL. Her iki Makam da sertifika alıyor. Görebildiğim kadarıyla ... digital.com/ssl-certificates/geotrust digital.com/ssl-certificates/RAPIDSSL güvenlik açısından, sertifikanızın harici bir sistem tarafından oluşturulacağı için bunun minimum bir istismar olacağını düşünüyorum ve hala geçerli olmak zorunda. Benim durumumda 90 günde bir yenilenmesi gereken sslforfree.com'u kullandım , ancak özellikle demo sitem vb. İçin daha düşük maliyet ödemek için küçük bir fiyat
TheNerdyNerd

6
@Kunal: Bu, test / dev sertifika dosyalarını almanın basit bir yolu olabilir, ancak özel anahtarınızı başka bir tarafa yüklemek, güvenli üretim ortamları için genel bir nogodur.
Stefan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.