Jaka jest różnica między .pfx
a .cert
pliki certyfikatów?
Czy rozpowszechniamy .pfx
lub .cert
w celu uwierzytelnienia klienta?
Komentarze
- Również [ 1 ] , [ 2 ] , [ 3 ]
Odpowiedź
Istnieją dwa obiekty: klucz prywatny , który jest własnością serwera , zachowuje tajemnicę i używa do otrzymywania nowych połączeń SSL; oraz klucz publiczny , który jest matematycznie powiązany z kluczem prywatnym i oznaczony jako „publiczny”: jest wysyłany do każdego klienta w ramach początkowych kroków połączenia.
certyfikat jest nominalnie kontenerem dla klucza publicznego. Zawiera klucz publiczny, nazwę serwera, dodatkowe informacje o serwerze oraz podpis obliczony przez urząd certyfikacji (CA). Gdy serwer wysyła swój klucz publiczny do klienta, w rzeczywistości wysyła swój certyfikat wraz z kilkoma innymi certyfikatami (certyfikat zawierający klucz publiczny urzędu certyfikacji, który podpisał jego certyfikat, oraz certyfikat urzędu certyfikacji, który podpisał urząd certyfikacji certyfikat itd.). Certyfikaty są z natury obiektami publicznymi.
Niektórzy używają terminu „certyfikat” do oznaczenia zarówno certyfikatu, jak i klucza prywatnego; jest to częste źródło nieporozumień. Osobiście trzymam się ścisła definicja, dla której certyfikat jest podpisanym kontenerem tylko dla klucza publicznego.
Plik .pfx
to Archiwum PKCS # 12 : worek, który może zawierać wiele obiektów z opcjonalnym zabezpieczeniem hasłem; ale zazwyczaj archiwum PKCS # 12 zawiera certyfikat (prawdopodobnie z wybranym zestawem certyfikatów CA) i odpowiedni klucz prywatny.
Z drugiej strony .cert
(lub .cer
lub
) zwykle zawiera pojedynczy certyfikat, sam i bez żadnego opakowania (bez klucza prywatnego, bez ochrony hasłem, tylko certyfikat).
Komentarze
- Podczas uwierzytelniania klienta wymagamy zainstalowania certyfikatu klienta ssl w przeglądarce klienta. Czy to plik .pfx czy .cert?
- Certyfikaty są danymi publicznymi; wszyscy je mają. Ale uwierzytelnianie klienta polega na tym, aby klient zrobił coś, co tylko to może zrobić; więc klient musi wiedzieć coś, co nie jest publiczne i że ' jest kluczem prywatnym. Dlatego klient musi mieć klucz prywatny wraz z certyfikatem; jeśli klucz został wygenerowany z przeglądarki klienta, oczekiwana konfiguracja polega na zaimportowaniu go do klienta wraz z certyfikatem. Dlatego plik .pfx.
- Mam plik .pfx z serwera IIS, na którym jest zainstalowany mój certyfikat. Czy to jest plik .pfx, który powinien być rozpowszechniany? Ponieważ CA dostarczył plik .cert zawierający klucze, które zostały zainstalowane na serwerze.
- @ Xsecure123 nie; istnieją ' dwa scenariusze tutaj – a Tomasz odpowiadał tylko o autoryzację klienta (gdzie każdy klient ma ' własny prywatny certyfikat do udowodnić swoją tożsamość). – Wygląda na to, że ' robisz coś innego – wygląda na to, że ' używasz certyfikatu z podpisem własnym w IIS i klienci nie ' mu nie ufają. – W takim przypadku należy przekazać klientom plik .cer z serwera. – ponieważ klienci potrzebują tylko klucza publicznego, aby zaufać serwerowi. – Jeśli mają również klucz prywatny, mogą podszyć się pod serwer lub odszyfrować jego ruch ', a ' s nie coś, czego chcesz.
- @ BrainSlugs83: Co masz na myśli mówiąc o prywatnym certyfikacie. Thomas wspomniał, że certyfikaty są danymi publicznymi. Czy możesz to rozwinąć?
Odpowiedź
Wiem, że to jest wątek sprzed roku, ale dla przyszłych czytelników , jak wspomniano powyżej, nie, nie rozpowszechniasz pliku .pfx, ponieważ jest to plik zawierający klucz prywatny. Możesz wyodrębnić i rozpowszechnić certyfikat (który jest publiczny) z pliku .pfx za pomocą metody opisanej tutaj: https://stackoverflow.com/questions/403174/convert-pfx-to-cer
Komentarze
- Gdzie należy bezpiecznie przechowywać plik pfx na serwerze? Oczywiście nie ' nie chcesz innej aplikacji korzystającej z Twojego pliku PFX, ale nie ' nie sądzę, że ' chciałbym też przechowywać go w mojej aplikacji.Czy mógłbyś po prostu zaimportować go do menedżera certyfikatów maszyny i uzyskać do niego dostęp programowy?
- Zarządzanie kluczami prywatnymi @Matt to cały temat sam w sobie. Niektóre odpowiednie odpowiedzi można znaleźć tutaj i tutaj (druga ' nie jest ściśle związane z plikami PFX, ale wciąż jest nowatorskie). Sam plik PFX nie ' nie musi być przechowywany na serwerze (tj. Jeśli ' ponownie używasz IIS7, ' d zaimportuj PFX; jeśli nie, ' d wyodrębnij klucz prywatny cert & z PFX do własnych plików).
Odpowiedz
Co jest różnica między plikami certyfikatów .pfx i .cert?
Odpowiedź udzielona przez @Thomas Pornin jest całkiem dobra.
Czy rozpowszechniamy .pfx lub .cert do uwierzytelniania klienta?
To zależy od używanego procesu.
Typowy proces konfigurowania klienta zewnętrznego do uwierzytelniania przy użyciu certyfikatu jest następujący: 1) klient generuje asymetryczną parę kluczy (klucze publiczny i prywatny); 2) klient generuje żądanie podpisania certyfikatu dla klucza publicznego i przesyła je do serwera; 3) serwer podpisuje klucz publiczny i zwraca ten podpis (” certyfikat „) do klienta; 4) klient przechowuje klucz prywatny wraz z tym certyfikatem w swoim magazynie kluczy. Teraz, gdy klient łączy się z serwerem, prezentowany jest certyfikat, a klient jest uwierzytelniany.
W powyższym scenariuszu ” .cert jest odsyłany z powrotem do klienta.
Wewnętrznie wiele organizacji wykonuje ten proces dla swoich pracowników. W takiej sytuacji zachodzi następująca sytuacja: personel IT generuje parę kluczy publiczny i prywatny dla pracownika wraz z żądaniem podpisania certyfikatu. Następnie podpisują klucz publiczny (za pomocą swojego prywatnego urzędu certyfikacji) i umieszczają wynikowy certyfikat wraz z odpowiednim kluczem prywatnym i wszystkimi certyfikatami pośredniego urzędu certyfikacji (” łańcuch certyfikatów „), w magazynie kluczy użytkownika.
W tym scenariuszu ” .pfx ” (lub ” .pem „) byłby odpowiedni, ponieważ zawierałby wszystkie elementy potrzebne do uwierzytelnienia klienta: prywatny klucz, certyfikat i łańcuch certyfikatów.
Wyszukaj ” Certificate Auto-Enrollment „, aby znaleźć sposób aby zautomatyzować ten proces dla użytkowników i urządzeń w przedsiębiorstwie.