Próbuję wygenerować parę kluczy prywatny-publiczny i przekonwertować klucz publiczny na certyfikat, który można dodać w moim zaufanym magazynie.
Aby wygenerować prywatny & klucz publiczny: openssl rsa -in private.pem -outform PEM -pubout -out public_key.pem
Teraz ja próbuję przekonwertować to na certyfikat:
openssl x509 -outform der -in public_key.pem -out public.cer
Ale pojawia się błąd:
7962:error:0906D06C:PEM routines:PEM_read_bio:no start line:/BuildRoot/Library/Caches/com.apple.xbs/Sources/OpenSSL098/OpenSSL098-64.30.2/src/crypto/pem/pem_lib.c:648:Expecting: TRUSTED CERTIFICATE
Wszystkie samouczki pokazują, że przed dodaniem do truststore muszę przekonwertować pem na crt.
Odpowiedź
Nie możesz ” przekonwertować „klucz publiczny na certyfikat. Certyfikat zawiera klucz publiczny, ale zawiera również więcej informacji, takich jak temat, wystawca, data ważności certyfikatu itp. Certyfikat jest podpisywany przez wystawcę. Dlatego zamiast tego potrzebowałbyś utworzyć żądanie podpisania certyfikatu (CSR), które zawiera klucz publiczny, ale także wszystkie dodatkowe informacje. Ten CSR musi następnie zostać podpisany przez urząd certyfikacji (CA), który następnie wystawia certyfikat.
Aby utworzyć prosty certyfikat z podpisem własnym, który nie jest zaufany w żadnej przeglądarce, zobacz Jak utworzyć certyfikat z podpisem własnym za pomocą openssl? .
Komentarze
- W tym przykładzie: openssl req -x509 -newkey rsa: 4096 -keyout key.pem -out cert.pem -days 365 key.pem będzie zawierał zarówno klucz prywatny, jak i publiczny?
- @ user1692342: I ' nie jestem pewien, jak pytanie w komentarzu odnosi się do pierwotnego pytania. Ale: key.pem to klucz prywatny, który zawiera klucz publiczny , a klucz publiczny jest również zawarty w cert.pem.
Odpowiedź
Nie można przekształcić klucza publicznego w certyfikat.
Oryginalne polecenia nie będą działać, ponieważ kodowanie / format pliku PEM zawiera zaszyfrowany tekst certyfikatu, jak poniżej:
—– BEGIN CERTIFICATE —–
Dane certyfikatu tutaj
—– END CERTIFICATE —–
Dlatego jeśli przeglądasz oryginalny plik .PEM i widzisz coś innego (np. BEGIN RSA …), to jest to nieprawidłowe.
Teraz zgodnie z tytułem wątku chcą przekonwertować PEM na format pliku CRT . Zauważ, że certyfikaty x509 mogą być w dwóch kodowaniach – DER i PEM. Ponadto PEM może znajdować się w formacie .CRT, .CER, a także .PEM.
Dlatego jeśli zobaczysz ten błąd, istnieje również szansa, że traktujesz certyfikat zakodowany w DER jako certyfikat zakodowany w formacie PEM. Możesz spróbować sprawdzić, czy jest to rzeczywiście zakodowany DER, postępując zgodnie z instrukcjami na tej .