Twoje klucze mogą być już w formacie PEM, ale mają tylko nazwy .crt lub .key.
Jeśli treść pliku zaczyna się od -----BEGINi możesz go odczytać w edytorze tekstu:
Plik wykorzystuje base64, który można odczytać w ASCII, a nie w formacie binarnym. Certyfikat jest już w formacie PEM. Po prostu zmień rozszerzenie na .pem.
Jeśli plik jest binarny:
W przypadku server.crt użyłbyś
openssl x509 -inform DER -outform PEM -in server.crt -out server.crt.pem
W przypadku server.key użyj openssl rsazamiast openssl x509.
Server.key jest prawdopodobnie twoim prywatnym kluczem, a plik .crt to zwrócony, podpisany certyfikat x509.
Jeśli dotyczy to serwera WWW i nie można określić ładowania osobnego klucza prywatnego i publicznego:
Może być konieczne połączenie dwóch plików. Do tego celu:
Sprawdź format server.key. Zakładałem tylko, że to RSA. Ale czytanie pierwszego wiersza pliku prawdopodobnie to powie.
maxwellb
10
Tylko jedna głowa, która cat server.crt server.key > server.pemnie umieści otwartego komentarza we własnej linii, co wydaje się być wymogiem. Przesyłki kurierskie dały mi piekło i zajęło mi wiele godzin, aby dowiedzieć się, co się dzieje.
Graham Walters
1
Dzięki Graham. Różne narzędzia będą generować pliki w różny sposób, a ostatecznie pewna weryfikacja jest dobra. Gdy wykonałem te kroki, pliki zakończyły się na przykład znakiem nowej linii.
maxwellb
Porada dotycząca łączenia plików .crt i .key była bardzo pomocna. Chciałem użyć mojego certyfikatu z stunnel3, ale nie miał sposobu na określenie pliku klucza. Wykorzystanie konkatenacji działało. (W rzeczywistości, ponieważ stunnel3 jest programem Perla, sam dodałem do niego opcję odczytu pliku klucza. Jednak, ponieważ później zobaczyłem, że konkatenacja działa, przywróciłem stunnel3 jego oryginalny kod.)
LS,
2
Tylko server.crt server.key > server.includesprivatekey.pemgarść stwierdzenia, że cat jest przydatny dla SSL z haproxy 1.5.
jimm101
224
Musiałem to zrobić dla AWS ELB. Po tym, jak wiele razy zostałem pobity przez dialog, w końcu to zadziałało:
W AWS nie zapomnij o dodaniu nazwy pliku file://. Będzie to wyglądać następująco:aws iam upload-server-certificate --server-certificate-name blah --certificate-body file://~/Desktop/server.crt --private-key file://~/Desktop/private.key --path /cloudfront/static/
FloatingRock
1
Drugie polecenie nic nie robi, jeśli twoje wejście jest plikiem pem, więc zakładając, że tak, potrzebujesz tylko pierwszego polecenia
Kristofer
Niesamowite! To działa dobrze dla mnie! Właśnie przekonwertowałem moje pliki .key i .crt do .pem za pomocą linii kodu, a następnie przesłałem (kopiuj / wklej) za pomocą konsoli AWS. Dzięki!
Diego D,
79
pemPlik zawiera certyfikat i klucz prywatny. To zależy od formatu twojego certyfikatu / klucza, ale prawdopodobnie jest to tak proste:
Jeśli chcesz, aby plik zaczynał się od -----BEGIN RSA PRIVATE KEY-----i miał taki, który zaczyna się od -----BEGIN ENCRYPTED PRIVATE KEY-----, jest to polecenie, którego chcesz użyć.
Zauważyłem: jeśli używasz openssl do generowania certyfikatów, przechwytuje zarówno część tekstową, jak i część certyfikatu base64 w pliku crt. Ścisły format pem mówi ( definicja wiki ), że plik powinien zaczynać się i kończyć na BEGIN i END.
.pem - (Mail Enhanced Mail) Certyfikat DER zakodowany w standardzie Base64, zawarty między „----- ROZPOCZNIJ CERTYFIKAT -----” i „----- ZAKOŃCZ CERTYFIKAT -----”
Tak więc dla niektórych bibliotek (napotkałem to w Javie), które oczekują ścisłego formatu pem, wygenerowany crt nie przejdzie walidacji jako „nieprawidłowy format pem”.
Nawet jeśli skopiujesz lub grepujesz linie za pomocą BEGIN / END CERTIFICATE i wkleisz go do pliku cert.pem, to powinno działać.
Oto, co robię, niezbyt czyste, ale działa dla mnie, w zasadzie filtruje tekst, zaczynając od linii BEGIN:
Inną opcją jest po prostu przekazanie nie wymagającego certyfikatu openssl x509. cat certificate.crt | openssl x509 > certificate.pem
Wyśle
Jeśli chcesz uzyskać wszystko, od „BEGIN” do końca pliku, jest to zadanie dla sed. W szczególności chcesz coś sed -n '/--BEGIN/,$p' cert.crtw tym przypadku. Aby to wyjaśnić: „-n” mówi sedowi, aby nie drukował niczego domyślnie, a następnie wyrażenie zakresu /--BEGIN/,$powoduje, że ppolecenie (print) stosuje się do linii między pierwszą linią, która zawiera, --BEGINa końcem pliku ( $).
dannysauer
4
Próbowałem przejść od chrzestnego do silnika aplikacji. Jaka była sztuczka przy użyciu tej linii:
Dokładnie tak, jak jest, ale zastąpienie nazwy moją nazwą domeny (nie żeby to naprawdę miało znaczenie)
Odpowiedziałem na wszystkie pytania dotyczące nazwy zwyczajowej / organizacji jako www.name.com
Następnie otworzyłem csr, skopiowałem go, wkleiłem w go tatusiu, następnie pobrałem, rozpakowałem, przeszedłem do rozpakowanego folderu z terminalem i wprowadziłem:
dokładnie tak, jak jest, poza tym, że zamiast privateKey.key użyłem name.unencrypted.priv.key, a zamiast www_moja_domena_com.crt użyłem name.crt
Następnie przesłałem public.pem do konsoli administracyjnej w celu uzyskania „certyfikatu X.509 zakodowanego w PEM”, i przesłałem private.pem dla „prywatnego klucza RSA zakodowanego w PEM”.
Próba przesłania certyfikatu GoDaddy do AWS kilkakrotnie mi się nie udało, ale ostatecznie było to dość proste. Nie trzeba konwertować niczego na .pem. Musisz tylko upewnić się, że dołączasz certyfikat pakietu GoDaddy do parametru łańcucha, np
Nie zadziałało to dla mnieAn error occurred (MalformedCertificate) when calling the UploadServerCertificate operation: Unable to parse certificate. Please ensure the certificate is in PEM format.
Adam Raudonis
4
Pobierz certyfikat z tymczasowego portalu przez appleId,
Wyeksportuj certyfikat z łańcucha kluczy i podaj nazwę (Certyfikaty.p12),
Otwórz folder terminala i goto, w którym zapisujesz powyżej pliku Certificates.p12,
Uruchom poniższe polecenia:
a) openssl pkcs12 -in Certificates.p12 -out CertificateName.pem -nodes,
b) openssl pkcs12 -in Certificates.p12 -out pushcert.pem -nodes -clcerts
.pem
na.crt
i.key
.Odpowiedzi:
Twoje klucze mogą być już w formacie PEM, ale mają tylko nazwy .crt lub .key.
Jeśli treść pliku zaczyna się od
-----BEGIN
i możesz go odczytać w edytorze tekstu:Plik wykorzystuje base64, który można odczytać w ASCII, a nie w formacie binarnym. Certyfikat jest już w formacie PEM. Po prostu zmień rozszerzenie na .pem.
Jeśli plik jest binarny:
W przypadku server.crt użyłbyś
W przypadku server.key użyj
openssl rsa
zamiastopenssl x509
.Server.key jest prawdopodobnie twoim prywatnym kluczem, a plik .crt to zwrócony, podpisany certyfikat x509.
Jeśli dotyczy to serwera WWW i nie można określić ładowania osobnego klucza prywatnego i publicznego:
Może być konieczne połączenie dwóch plików. Do tego celu:
Poleciłbym nazwać pliki słowem „includeesprivatekey”, aby pomóc Ci zarządzać uprawnieniami, które masz z tym plikiem.
źródło
cat server.crt server.key > server.pem
nie umieści otwartego komentarza we własnej linii, co wydaje się być wymogiem. Przesyłki kurierskie dały mi piekło i zajęło mi wiele godzin, aby dowiedzieć się, co się dzieje.server.crt server.key > server.includesprivatekey.pem
garść stwierdzenia, że cat jest przydatny dla SSL z haproxy 1.5.Musiałem to zrobić dla AWS ELB. Po tym, jak wiele razy zostałem pobity przez dialog, w końcu to zadziałało:
Dzięki NCZ
Edycja: Jak mówi @floatingrock
W AWS nie zapomnij o dodaniu nazwy pliku
file://
. Będzie to wyglądać następująco:http://docs.aws.amazon.com/cli/latest/reference/iam/upload-server-certificate.html
źródło
file://
. Będzie to wyglądać następująco:aws iam upload-server-certificate --server-certificate-name blah --certificate-body file://~/Desktop/server.crt --private-key file://~/Desktop/private.key --path /cloudfront/static/
pem
Plik zawiera certyfikat i klucz prywatny. To zależy od formatu twojego certyfikatu / klucza, ale prawdopodobnie jest to tak proste:źródło
-bash: server.key.pem: Permission denied
Dodatkowo, jeśli nie chcesz, aby prosił o hasło, musisz uruchomić następującą komendę:
źródło
-----BEGIN RSA PRIVATE KEY-----
i miał taki, który zaczyna się od-----BEGIN ENCRYPTED PRIVATE KEY-----
, jest to polecenie, którego chcesz użyć.jest to najlepsza opcja do utworzenia pliku .pem
źródło
Zauważyłem: jeśli używasz openssl do generowania certyfikatów, przechwytuje zarówno część tekstową, jak i część certyfikatu base64 w pliku crt. Ścisły format pem mówi ( definicja wiki ), że plik powinien zaczynać się i kończyć na BEGIN i END.
Tak więc dla niektórych bibliotek (napotkałem to w Javie), które oczekują ścisłego formatu pem, wygenerowany crt nie przejdzie walidacji jako „nieprawidłowy format pem”.
Nawet jeśli skopiujesz lub grepujesz linie za pomocą BEGIN / END CERTIFICATE i wkleisz go do pliku cert.pem, to powinno działać.
Oto, co robię, niezbyt czyste, ale działa dla mnie, w zasadzie filtruje tekst, zaczynając od linii BEGIN:
źródło
openssl x509
.cat certificate.crt | openssl x509 > certificate.pem
sed -n '/--BEGIN/,$p' cert.crt
w tym przypadku. Aby to wyjaśnić: „-n” mówi sedowi, aby nie drukował niczego domyślnie, a następnie wyrażenie zakresu/--BEGIN/,$
powoduje, żep
polecenie (print) stosuje się do linii między pierwszą linią, która zawiera,--BEGIN
a końcem pliku ($
).Próbowałem przejść od chrzestnego do silnika aplikacji. Jaka była sztuczka przy użyciu tej linii:
Dokładnie tak, jak jest, ale zastąpienie nazwy moją nazwą domeny (nie żeby to naprawdę miało znaczenie)
Odpowiedziałem na wszystkie pytania dotyczące nazwy zwyczajowej / organizacji jako www.name.com
Następnie otworzyłem csr, skopiowałem go, wkleiłem w go tatusiu, następnie pobrałem, rozpakowałem, przeszedłem do rozpakowanego folderu z terminalem i wprowadziłem:
Następnie skorzystałem z tych instrukcji z Trouble z Google Apps Custom Domain SSL , które były:
dokładnie tak, jak jest, poza tym, że zamiast privateKey.key użyłem name.unencrypted.priv.key, a zamiast www_moja_domena_com.crt użyłem name.crt
Następnie przesłałem public.pem do konsoli administracyjnej w celu uzyskania „certyfikatu X.509 zakodowanego w PEM”, i przesłałem private.pem dla „prywatnego klucza RSA zakodowanego w PEM”.
.. I to w końcu zadziałało.
źródło
Próba przesłania certyfikatu GoDaddy do AWS kilkakrotnie mi się nie udało, ale ostatecznie było to dość proste. Nie trzeba konwertować niczego na .pem. Musisz tylko upewnić się, że dołączasz certyfikat pakietu GoDaddy do parametru łańcucha, np
Aby usunąć poprzednie nieudane przesyłanie, możesz to zrobić
źródło
An error occurred (MalformedCertificate) when calling the UploadServerCertificate operation: Unable to parse certificate. Please ensure the certificate is in PEM format.
Uruchom poniższe polecenia:
a)
openssl pkcs12 -in Certificates.p12 -out CertificateName.pem -nodes
,b)
openssl pkcs12 -in Certificates.p12 -out pushcert.pem -nodes -clcerts
źródło
źródło