2013-05-10 12 views
19

Staramy się wdrożyć niektóre funkcje usługi internetowej od jednego z naszych partnerów. Teraz treść, która jest transmitowana, powinna być zaszyfrowana za pomocą klucza publicznego, który musimy dostarczyć.X.509: Klucz prywatny/publiczny

Specyfikacja bezpieczeństwa mówi, że certyfikat publiczny musi być zgodny ze standardem X.509. Czy X.509 nie opiera się na metodzie prywatnego/publicznego klucza? Bo tylko jeden plik .pem, zawierający klucz prywatny oraz certyfikat, ale nie ma klucza publicznego, za pomocą następującego polecenia:

openssl req -new -x509 -days 365 -nodes -out ./cert.pem -keyout ./cert.pem 

muszę zmodyfikować polecenie, aby stworzyć prywatny i klucz publiczny?

Odpowiedz

54

Kroki wiersza poleceń podstawy do wygenerowania klucza prywatnego i publicznego przy użyciu OpenSSL są następujące

openssl genrsa -out private.key 1024 
openssl req -new -x509 -key private.key -out publickey.cer -days 365 
openssl pkcs12 -export -out public_privatekey.pfx -inkey private.key -in publickey.cer 

Krok 1 - generuje klucz prywatny

Krok 2 - tworzy certyfikat X509 (cer pliku) zawierające Twój klucz publiczny, który przesyłasz podczas rejestracji swojej prywatnej aplikacji (lub aktualizacji do aplikacji partnerskiej).

Krok 3 - Wyeksportuj swój certyfikat x509 i klucz prywatny do pliku pfx. Jeśli wybrana biblioteka opakowania używa pliku .pem do podpisywania żądań, ten krok nie jest wymagany.

Nadzieję, że pomaga! This answer explains różne rozszerzenia plików.

+1

Nie jestem do końca pewien, co robi trzecie polecenie, ale wygląda na to, że działa całkiem dobrze z privatekey.pem i publickey.cer. Dzięki! – Ahatius

+0

W tym przykładzie plik 'privatekey.pem' zawiera tylko klucz prywatny lub klucz publiczny? –

+5

Używasz niewłaściwego rozszerzenia pliku w pierwszym poleceniu. Powinieneś użyć '.key' zamiast' .pem', aby uniknąć nieporozumień. Wynikowy plik będzie po prostu kluczem prywatnym. Ktoś może przez pomyłkę wysłać plik '.pem' komuś innemu, tworząc problem bezpieczeństwa. – w0rp

8

Klucz publiczny jest przechowywany wewnątrz certyfikatu x.509. Certyfikat wiąże informacje o tożsamości (nazwa zwyczajowa, adres, cokolwiek innego) z tym kluczem publicznym.

+1

Cóż, w moim przypadku nie ma ** ** BEGIN CERTIFICATE i ** BEGIN PRIVATE KEY **. Czy CERTYFIKAT jest moim kluczem publicznym? Czy mogę podzielić te dwa na osobne pliki, aby druga strona nie widziała klucza prywatnego? – Ahatius

+2

Tak, częścią CERTIFICATE jest certyfikat (kodowany base64, z kluczem publicznym), KLAWISZ PRYWATNY - jest, klucz prywatny. Możesz (i faktycznie POWINIEN) rozdzielić je i wysłać tylko część certyfikatu innej stronie. –

+2

Ok, dziękuję bardzo. Wyślę im wtedy CERTYFIKAT :) Chciałbym przegłosować, ale najwyraźniej osiągnąłem swój dzienny limit głosowania: O – Ahatius

1

Utwórz parę kluczy prywatny-publiczny.

openssl req -x509 -newkey rsa:2048 -keyout private.key -out public.cert -days 365 

Opcjonalnie można połączyć parę w pojedynczy plik.

openssl pkcs12 -export -inkey private.key -in public.cert -out certificate.pfx 

Powoduje to następujące pliki.

private.key 
certificate.pfx 
public.cert 

Zobacz także

Powiązane problemy