OpenSSL Konwertuj PEM na PFX za pomocą klucza RSA PRIVATE

3

Próbuję użyć OpenSSL do konwersji pliku PEM i klucza prywatnego RSA do pliku PFX. Oto przykładowe polecenie, którego próbowałem użyć:

openssl pkcs12 -export -out cert.pfx -inkey key.pem -in cert.pem

W ten sposób otrzymuję następujący komunikat o błędzie:

unable to load private key
9068:error:0906D06C:PEM routines:PEM_read_bio:no start 
line:pem_lib.c:696:Expecting: ANY PRIVATE KEY

Plik cert wygląda następująco:

-----BEGIN CERTIFICATE-----
....
-----END CERTIFICATE-----

i klucz prywatny wygląda następująco:

-----BEGIN RSA PRIVATE KEY-----
....
-----END RSA PRIVATE KEY-----

Kopałem błąd, ale nie znalazłem jeszcze rozwiązania.

EDYTOWAĆ

Po kilku dodatkowych badaniach wydaje się, że jest to problem z różnymi wersjami openssl.

Jeśli uruchomię go na moim systemie OSX, który działa w wersji 0.9.8zh 14 stycznia 2016, te instrukcje działają poprawnie.

Jeśli jednak uruchomię go na komputerze z systemem Windows w wersji OpenSSL 1.0.1p 9 lipca 2015 i OpenSSL 1.1.0g 2 listopada 2017, otrzymam powyższe błędy.

thxmike
źródło
Pracuje dla mnie! Czy openssl rsa -in <private key filename> -noout -textpokazuje szczegóły klucza lub błąd? Może plik klucza prywatnego jest uszkodzony? Jeśli to działa, przekonwertuj go na klucz prywatny PKCS # 8 openssl pkcs8 -in <private key file> -topk8 -nocrypt -out <new private key file>i spróbuj wygenerować PKCS # 12.
garethTheRed
@garethTheRed: Dzięki. Ta dodatkowa informacja była bardzo pomocna, prowadząc mnie głębiej do problemu.
thxmike

Odpowiedzi:

0

Po kilku kopaniach odkryłem, że to skrypty Powershell generują pliki kluczy i certyfikatów.

Używając Notepad ++ w systemie Windows i Tex-Edit Plus w OSX do identyfikacji ukrytych znaków, stwierdziłem, że na końcu pliki miały dodatkowe [cr].

Za pomocą polecenia

openssl rsa -in <private key file> -noout -text
openssl x509 -in <cert file> -noout -text

Są dobre kontrole ważności plików

Ponieważ moim źródłem były ciągi zakodowane w standardzie base64, skończyło się na użyciu polecenia certutil w systemie Windows (tj.)

certutil -f -decode cert.enc cert.pem
certutil -f -decode key.enc cert.key

w systemie Windows, aby wygenerować pliki. Gdy pliki będą poprawne, powyższe polecenie OpenSSL działało zgodnie z oczekiwaniami.

thxmike
źródło
0

Twój certyfikat cert.pem zawiera również klucz. Upewnij się, że masz certyfikat bez klucza. Użyj -nokeys podczas tworzenia certyfikatu.

użytkownik1014577
źródło