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.
openssl rsa -in <private key filename> -noout -text
pokazuje szczegóły klucza lub błąd? Może plik klucza prywatnego jest uszkodzony? Jeśli to działa, przekonwertuj go na klucz prywatny PKCS # 8openssl pkcs8 -in <private key file> -topk8 -nocrypt -out <new private key file>
i spróbuj wygenerować PKCS # 12.Odpowiedzi:
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
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.)
w systemie Windows, aby wygenerować pliki. Gdy pliki będą poprawne, powyższe polecenie OpenSSL działało zgodnie z oczekiwaniami.
źródło
Twój certyfikat cert.pem zawiera również klucz. Upewnij się, że masz certyfikat bez klucza. Użyj -nokeys podczas tworzenia certyfikatu.
źródło