Jak utworzyć plik .pfx z certyfikatu i klucza prywatnego?

363

Potrzebuję pliku .pfx, aby zainstalować https na stronie internetowej w IIS.

Mam dwa osobne pliki: certyfikat (.cer lub pem) i klucz prywatny (.crt), ale IIS akceptuje tylko pliki .pfx.

Oczywiście zainstalowałem certyfikat i jest on dostępny w menedżerze certyfikatów (mmc), ale kiedy wybieram Kreatora eksportu certyfikatów, nie mogę wybrać formatu PFX (jest wyszarzony)

Czy są jakieś narzędzia do wykonania tego lub przykłady C # robienia tego programowo?

jlp
źródło
2
możliwy duplikat Konwertuj certyfikat CERT / PEM na certyfikat PFX
Daniel DiPaolo
1
to prawda, ale jego odpowiedź nie jest jasna i nic nie naprawia w moim przypadku
jlp,
@alexl jest dostępna wersja dla systemu Windows?
jp
Otwiera prawie całkowicie niepotrzebne w prawie wszystkich przypadkach. Właśnie dodałem swoją odpowiedź (którą utworzyłem na blogu, aby ją podać). Ironią jest to, że gdy generujesz CSR zgodnie z przeznaczeniem, prawdopodobnie nawet nie potrzebujesz PFX.
rainabba

Odpowiedzi:

554

Musisz użyć openssl.

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

Plik klucza jest po prostu plikiem tekstowym z kluczem prywatnym.

Jeśli masz głównego urzędu certyfikacji i certyfikatów pośrednich, a następnie włączyć je również za pomocą wielu -inparams

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

Możesz zainstalować openssl stąd: openssl

jdehlin
źródło
11
„Plik klucza jest tylko plikiem tekstowym z kluczem prywatnym”. To prawda, chyba że tak nie jest.
Casey
37
Dzięki, dodam również, jeśli masz główny urząd certyfikacji lub certyfikat pośredni, możesz go dołączyć, podając wielokrotny parametr -in :openssl pkcs12 -export -out domain.name.pfx -inkey domain.name.key -in domain.name.crt -in intermediate.crt -in rootca.crt
gerrytan
10
Wykonałam pracę dla mnie. Drobna uwaga: uruchomienie tego na komputerze z systemem Windows wymaga uruchomienia openssl w wierszu polecenia administratora.
Martin Costello,
13
Skąd bierzesz plik klucza? Otrzymałem certyfikat SSL, ale nigdzie nie widzę pliku klucza. Właśnie dostałem plik p7b i kilka plików * .crt.
Knelis
11
Aby to zadziałało na openssl 1.0.2m, musiałem określić, -certfile intermediate.crt -certfile rootca.crtzanim pojawi się monit o ochronę .pfxhasłem / hasłem. Wydaje mi się, że jest to możliwe, ponieważ .keynie pasują do dodatkowych -inplików, co powoduje pojawienie się komunikatu o błędzie „Brak certyfikatu pasuje do klucza prywatnego”.
dragon788
36

Narzędzie wiersza polecenia Microsoft Pvk2Pfx wydaje się mieć niezbędną funkcjonalność:

Pvk2Pfx (Pvk2Pfx.exe) to narzędzie wiersza polecenia kopiujące informacje o kluczu publicznym i kluczu prywatnym zawarte w plikach .spc, .cer i .pvk do pliku wymiany informacji osobistych (.pfx).
http://msdn.microsoft.com/en-us/library/windows/hardware/ff550672(v=vs.85).aspx

Uwaga: jeśli potrzebujesz / chcesz / preferujesz rozwiązanie C #, możesz rozważyć skorzystanie z http://www.bouncycastle.org/ api.

Seymour
źródło
1
-spc argument dla pliku .cer
BozoJoe
2
C: \ Program Files (x86) \ Windows Kits \ 10 \ bin \ 10.0.15063.0 \ x64 \ pvk2pfx.exe
Stefan Steiger
35

Jeśli szukasz GUI dla systemu Windows, sprawdź DigiCert. Właśnie tego użyłem i było to dość proste.

Na karcie SSL najpierw zaimportowałem certyfikat. Potem, kiedy wybrałem Certyfikat, byłem w stanie wyeksportować jako plik PFX, zarówno z plikiem klucza, jak i bez niego.

https://www.digicert.com/util

joelnet
źródło
15
Gdy to zrobię, powie mi, że nie mam importowanego klucza prywatnego na mój komputer. Co jest prawdą.
Niels Brinch,
6
@NielsBrinch Kiedy to robię, mówi mi również, że nie mam importowanego klucza prywatnego na mój komputer. Spodziewaj się, że to fałsz, jest w tym samym folderze co certyfikat ...
aBertrand
@NielsBrinch Aby rozwiązać ten problem, musiałem ponownie przesłać nowy raport CSR, a następnie ponownie pobrać certyfikat, gdy został przetworzony, klucz prywatny został ukryty na serwerze / komputerze, na którym utworzono raport CSR. To rozwiązało ten komunikat o błędzie.
Paddymac,
Mogę polecić DigiCert w oparciu o kilkuletnie doświadczenie z nimi.
mmell
Nie zapomnij dołączyć klucza prywatnego do katalogu głównego DigiCertUtil.exepliku wykonywalnego. Najłatwiej jest po prostu skopiować go do folderu certyfikatu.
Jonas
32

Nie potrzebujesz openssl lub makecert ani żadnego z nich. Nie potrzebujesz również klucza osobistego przekazanego przez urząd certyfikacji. Mogę prawie zagwarantować, że problem polega na tym, że spodziewasz się, że będziesz mógł używać plików kluczy i cer dostarczonych przez twój urząd certyfikacji, ale nie są one oparte na „sposobie IIS”. Jestem tak zmęczony widzeniem złych i trudnych informacji tutaj, że postanowiłem blogować temat i rozwiązanie. Kiedy zdasz sobie sprawę, co się dzieje i zobaczysz, jakie to łatwe, będziesz chciał mnie przytulić :)

Certyfikaty SSL dla IIS z PFX raz na zawsze - wyjaśnienie SSL i IIS - http://rainabba.blogspot.com/2014/03/ssl-certs-for-iis-with-pfx-once-and-for.html

Użyj interfejsu IIS „Certyfikaty serwera” do „Generowania żądania certyfikatu” (szczegóły tego żądania są poza zakresem tego artykułu, ale te szczegóły są krytyczne). To da ci CSR przygotowany dla IIS. Następnie przekaż ten raport CSR do swojego urzędu certyfikacji i poproś o certyfikat. Następnie weź plik CER / CRT, który ci dali, wróć do IIS, „Complete Certificate Request” w tym samym miejscu, w którym wygenerowałeś żądanie. Może poprosić o .CER, a możesz mieć .CRT. To są te same rzeczy. Po prostu zmień rozszerzenie lub użyj .rozszerzenie listy rozwijanej, aby wybrać .CRT. Teraz podaj poprawną „przyjazną nazwę” (* .twojadomena.com, twojadomena.com, foo.twojadomena.com itp.). TO JEST WAŻNE! To MUSI być zgodne z tym, dla czego skonfigurowałeś CSR i tym, co dostarczył twój CA. Jeśli poprosiłeś o znak wieloznaczny, Twój urząd certyfikacji musi zatwierdzić i wygenerować symbol wieloznaczny i musisz użyć tego samego. Jeśli Twój CSR został wygenerowany dla foo.twojadomena.com, MUSISZ to zrobić na tym etapie.

rainabba
źródło
2
Pytanie otworzono: „Potrzebuję pliku .pfx, aby zainstalować https na stronie internetowej w IIS”.
rainabba
34
Czy możesz podać odpowiednią treść swojego postu w odpowiedzi? W ten sposób odpowiedź jest nadal aktualna, nawet jeśli Twój blog zniknie. Nadal możesz utworzyć link do swojego bloga. W tej chwili w treści odpowiedzi znajduje się 0 przydatnych informacji.
Deanna
16
Jest to najprostszy sposób, jeśli wnioskujesz o nowy certyfikat, jednak nie zadziała, jeśli masz już certyfikat i / lub klucz prywatny (np. Taki, którego wcześniej używałeś z Apache), ponieważ żądanie podpisania certyfikatu przez IIS wygeneruje nowy prywatny klucz. Uważam ten aspekt usług IIS za naprawdę denerwujący, ponieważ całe „kompletne żądanie” polega na połączeniu klucza prywatnego z certyfikatem publicznym w celu utworzenia pliku pfx, dlatego nie mógł zaakceptować ich jako osobnych plików w formacie PEM, które wie.
Chris Chilvers
2
Chociaż doceniam to, że twoje rozwiązanie jest najprawdopodobniej „właściwym sposobem”, myślę, że to więcej wysiłku niż wtrącanie się w openssl - jedno narzędzie, jedno wywołanie linii poleceń, jedno hasło, gotowe. Nie wiem też, czy wszystkie firmy ssl obsługują to podejście.
Jan Bühler,
8
Obawiam się, że twoja odpowiedź nie pomoże, jeśli certyfikat został wygenerowany w innym miejscu. Okej, IIS spodziewa się wygenerować i zawiesić sam klucz prywatny - czasami nie jest to po prostu opcja.
staticsan
8

Plik pfx utworzyłem z plików .key i .pem.

Lubię to openssl pkcs12 -inkey rootCA.key -in rootCA.pem -export -out rootCA.pfx

Siim Nelis
źródło
1
Jest to w zasadzie to samo polecenie, którego użyłem, ale musiałem dodać winpty przed openssl (np. Winpty openssl pkcs12 ....) podczas korzystania z Git bash, który jest powszechnym rozwiązaniem dla openssl w systemie Windows.
smoore4
Nie potrzebowałem -exportprzełącznika.
mmell
7

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

((odpowiednie cytaty z artykułu są poniżej))

Następnie musisz utworzyć plik .pfx, który będzie używany do podpisywania wdrożeń. Otwórz okno wiersza polecenia i wpisz następujące polecenie:

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

gdzie:

  • pvk - twójprivatekeyfile.pvk to plik klucza prywatnego utworzony w kroku 4.
  • spc - twójcertfile.cer to plik certyfikatu utworzony w kroku 4.
  • pfx - twójpfxfile.pfx to nazwa pliku .pfx, który będzie tworzony.
  • po - twojepfxpassword to hasło, które chcesz przypisać do pliku .pfx. Przy pierwszym dodaniu pliku .pfx do projektu w programie Visual Studio pojawi się monit o podanie tego hasła.

(Opcjonalnie (i nie dla OP, ale dla przyszłych czytelników) możesz utworzyć .cer i .pvk od zera) (zrobiłbyś to PRZED powyższym). Uwaga: mm / dd / rrrr są symbolami zastępczymi dat rozpoczęcia i zakończenia. pełna dokumentacja znajduje się w artykule msdn.

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

Musisz użyć narzędzia makecert.

Otwórz wiersz polecenia jako administrator i wpisz następujące polecenie:

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

Gdzie <CertifcateName>= nazwa twojego certyfikatu do utworzenia.

Następnie możesz otworzyć przystawkę Menedżer certyfikatów dla konsoli zarządzania, wpisując certmgr.msc w menu Start, kliknij osobisty> certyfikaty>, a Twój certyfikat powinien być dostępny.

Oto artykuł.

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

BentOnCoding
źródło
3
Nie mogę W kreatorze eksportu opcja pfx jest wyszarzona
jlp
mój certyfikat jest dostępny w menedżerze certyfikatów. To, czego nie mogę zrobić, to eksportować do formatu pfx. Co robi instrukcja z wiersza poleceń?
jp
Spróbuj utworzyć certyfikat zgodnie z zaleceniami i daj mi znać, czy to działa. To zajmie prawdopodobnie 5 minut. Artykuł zawiera pełne wyjaśnienie tego, co się dzieje.
BentOnCoding
Nie tego szukam. Nie chcę wystawiać certyfikatu. siebie. Kupiłem certyfikat od urzędu certyfikacji w 2 plikach. Wolę używać narzędzia OpenSSL
jlp,
5

Mam link do twojego wymagania. Połącz pliki CRT i KEY w PFX z OpenSSL

Fragmenty powyższego linku:

Najpierw musimy wyodrębnić certyfikat głównego urzędu certyfikacji z istniejącego pliku .crt, ponieważ potrzebujemy tego później. Więc otwórz .crt i kliknij kartę Ścieżka certyfikacji.

Kliknij najwyższy certyfikat (w tym przypadku VeriSign) i kliknij Wyświetl certyfikat. Wybierz kartę Szczegóły i naciśnij Kopiuj do pliku…

Wybierz certyfikat X.509 (.CER) zakodowany w programie Base-64. Zapisz go jako rootca.cer lub coś podobnego. Umieść go w tym samym folderze, co inne pliki.

Zmień nazwę z rootca.cer na rootca.crt Teraz powinniśmy mieć 3 pliki w naszym folderze, z których możemy utworzyć plik PFX.

Tutaj potrzebujemy OpenSSL. Możemy go pobrać i zainstalować na Windowsie lub po prostu otworzyć terminal na OSX.

EDYTOWAĆ:

  1. Istnieje łącze pomocy technicznej z informacjami krok po kroku, jak zainstalować certyfikat.

  2. Po pomyślnej instalacji wyeksportuj certyfikat, wybierz .pfxformat, dołącz klucz prywatny.

    Ważna uwaga: Aby wyeksportować certyfikat w formacie .pfx, należy wykonać kroki na tym samym komputerze, z którego zażądano certyfikatu .

  3. Zaimportowany plik można przesłać na serwer.

sudhAnsu63
źródło
1
Czy możesz wyjaśnić? jak dokładnie utworzyłeś plik PFX z pliku CERT? Gdzie i jak utworzyłeś plik KEY, proszę, wszystkie są mylące.
3
Czy możesz uprzejmie wyjaśnić stąd, w jaki sposób otrzymałeś plik klucza? np .:openssl pkcs12 -inkey example.com.key -in example.com.crt -export -out example.com.pfx
5

Oto NAJLEPSZY sposób na konwersję * .cer do plików * .pfx:

Wystarczy pobrać przenośny konwerter certyfikatów z DigiCert: https://www.digicert.com/util/pfx-certificate-management-utility-import-export-instructions.htm

Uruchom go, wybierz plik i zdobądź plik * .pfx !!

użytkownik1613797
źródło
Świetny! To zadziałało. Miałem plik .p7b. Zaimportowałem to do moich IIS, korzystając z instrukcji dostarczonych przez GoDaddy. Następnie wygenerowałem plik .cer (plik klucza), a następnie użyłem tego narzędzia do pobrania pliku pfx.
Shiva Naru
Narzędzie Digicert jest zdecydowanie najlepsze.
L_7337
1
Nie widzę żadnego sposobu robienia tego, co OP chce robić za pomocą tego narzędzia. Wydaje się, że pozwala tylko na eksport certyfikatów, a nie tworzenie ich z plików kluczy i cer.
NickG
1
Prawdopodobnie warto wspomnieć, że najpierw trzeba „zainstalować” certyfikat, a następnie wrócić do karty SSL i „wyeksportować” go, aby uzyskać rzeczywisty plik pfx.
access_granted
3

Kiedy powiesz, że certyfikat jest dostępny w MMC, czy jest on dostępny w „Bieżącym użytkowniku” lub „komputerze lokalnym”? Odkryłem, że mogę wyeksportować klucz prywatny tylko wtedy, gdy znajduje się on w komputerze lokalnym.

Możesz dodać przystawkę Certyfikaty do MMC i wybrać konto, dla którego ma zarządzać certyfikatami. Wybierz komputer lokalny. Jeśli Twojego certyfikatu nie ma, zaimportuj go, klikając prawym przyciskiem myszy sklep i wybierając Wszystkie zadania> Importuj.

Teraz przejdź do zaimportowanego certyfikatu w przystawce certyfikatu w wersji Komputer lokalny. Kliknij certyfikat prawym przyciskiem myszy i wybierz Wszystkie zadania> Eksportuj. Druga strona kreatora eksportu powinna zapytać, czy chcesz wyeksportować klucz prywatny. Wybierz Tak. Opcja PFX będzie teraz jedyną dostępną (jest wyszarzona, jeśli wybierzesz nie, a opcja eksportu klucza prywatnego nie jest dostępna w ramach konta bieżącego użytkownika).

Zostaniesz poproszony o ustawienie hasła do pliku PFX, a następnie o ustawienie nazwy certyfikatu.

Ryan Elkins
źródło
1

Miałem ten sam problem. Mój problem polegał na tym, że komputer, który wygenerował początkowe żądanie certyfikatu, zawiesił się przed zakończeniem rozszerzonego procesu sprawdzania poprawności ssl. Musiałem wygenerować nowy klucz prywatny, a następnie zaimportować zaktualizowany certyfikat od dostawcy certyfikatu. Jeśli klucz prywatny nie istnieje na twoim komputerze, nie możesz wyeksportować certyfikatu jako pfx. Opcja jest wyszarzona.

Bill Mahoney
źródło
1

Chociaż prawdopodobnie najłatwiej jest wygenerować nowy CSR przy użyciu IIS (jak powiedział @rainabba), zakładając, że masz certyfikaty pośrednie, istnieje kilka konwerterów online - na przykład: https://www.sslshopper.com/ssl-converter. HTML

Umożliwi to utworzenie pliku PFX na podstawie certyfikatu i klucza prywatnego bez konieczności instalowania innego programu.

William
źródło
0

W większości przypadków, jeśli nie możesz wyeksportować certyfikatu jako PFX (w tym klucza prywatnego), to dlatego, że MMC / IIS nie może znaleźć / nie ma dostępu do klucza prywatnego (używanego do generowania CSR). Oto kroki, które wykonałem, aby rozwiązać ten problem:

  • Uruchom MMC jako administrator
    • Wygeneruj CSR za pomocą MMC. Postępuj zgodnie z tymi instrukcjami, aby certyfikat mógł zostać wyeksportowany.
  • Po uzyskaniu certyfikatu z urzędu certyfikacji (crt + p7b) zaimportuj je (Personal \ Certificates i Intermediate Certification Authority \ Certificates)
  • WAŻNE: Kliknij prawym przyciskiem myszy nowy certyfikat (Osobiste \ Certyfikaty) Wszystkie zadania .. Zarządzaj kluczem prywatnym i przypisz uprawnienia do swojego konta lub Wszyscy (ryzykowne!). Po zakończeniu możesz wrócić do poprzednich uprawnień.
  • Teraz kliknij prawym przyciskiem myszy certyfikat i wybierz Wszystkie zadania .. Eksportuj, a powinieneś być w stanie wyeksportować certyfikat, w tym klucz prywatny jako plik PFX, i możesz przesłać go na platformę Azure!

Mam nadzieję że to pomoże!

Jose Parra
źródło
Mam już certyfikat w Osobistym \ Certyfikaty, ale po kliknięciu prawym przyciskiem myszy nie pojawia się komunikat „Zarządzaj kluczem prywatnym”. Dostaję następujące opcje: „Poproś o certyfikat z nowym kluczem ...”, „Odnów certyfikat z nowym kluczem ...” i „Eksportuj” ... Czy masz pojęcie, czego mi brakuje?
Gabrielizalo
1
Naprawiłem to za pomocą przenośnego konwertera certyfikatów DigiCert: digicert.com/util/…
Gabrielizalo
Nie udało się „wygenerować CSR”. Jeśli masz już klucz prywatny, nie musisz generować CSR. Przeczytaj oryginalne pytanie.
NickG
0

Wiem, że kilku użytkowników mówiło o instalacji tego i tamtego, dodawaniu programów wiersza poleceń i pobieraniu ...

Osobiście jestem leniwy i uważam, że wszystkie te metody są uciążliwe i powolne, a ponadto nie chcę niczego pobierać i znaleźć poprawnych linii cmd, jeśli nie muszę.

Najlepszym sposobem na moim osobistym serwerze IIS jest użycie RapidSSLOnline. To narzędzie, które znajduje się na serwerze, umożliwia przesłanie certyfikatu i klucza prywatnego i jest w stanie wygenerować plik pfx, który można bezpośrednio zaimportować do IIS.

Link jest tutaj: https://www.rapidsslonline.com/ssl-tools/ssl-converter.php

Poniżej przedstawiono kroki zastosowane w żądanym scenariuszu.

  1. Wybierz typ prądu = PEM
  2. Zmień na = PFX
  3. Prześlij swój certyfikat
  4. Prześlij swój klucz prywatny
  5. Jeśli masz certyfikat ROOT CA lub certyfikat pośredni, prześlij je również
  6. Ustaw wybrane hasło, używane w IIS
  7. Kliknij reCaptcha, aby udowodnić, że nie jesteś botem
  8. Kliknij Konwertuj

I to wszystko, powinieneś pobrać plik PFX i użyć go w procesie importowania w IIS.

Mam nadzieję, że to pomaga innym podobnie myślącym, leniwym technologom.

TheNerdyNerd
źródło
6
Czy przesyłanie certyfikatu na stronie internetowej innej firmy, która go nie wystawiła, jest bezpieczne?
Kunal
1
Cześć, Rapid SSL Wierzę, że są własnością GeoTrust. Zarówno władze w uzyskaniu certyfikatu. O ile mogę powiedzieć ... digital.com/ssl-certificates/geotrust digital.com/ssl-certificates/RAPIDSSL w odniesieniu do bezpieczeństwa, myślę, że byłby to minimalny exploit, ponieważ twój certyfikat zostałby wygenerowany przez system zewnętrzny i wciąż muszą być ważne. W moim przypadku korzystałem z witryny sslforfree.com, która musi być odnawiana co 90 dni, ale jest to niewielka cena za niższy koszt, szczególnie w przypadku mojej witryny demonstracyjnej itp.
TheNerdyNerd
5
@Kalal: Może to być prosty sposób na uzyskanie plików certyfikatów testowych / deweloperskich, ale przesyłanie klucza prywatnego innej stronie to ogólne nogo dla bezpiecznych środowisk produkcyjnych.
Stefan
0

Dla plików cfx z SSLForFree uważam, że https://decoder.link/converter jest najłatwiejszy.

Po prostu upewnij się, że wybrano PEM -> PKCS # 12, a następnie prześlij certyfikat, pakiet ca_bundle i pliki kluczy i dokonaj konwersji. Zapamiętaj hasło, a następnie prześlij je przy użyciu hasła i dodaj powiązania.

Pete Herc
źródło