Nie można podpisać S / MIME przy użyciu OpenSSL, nawet jeśli „weryfikacja” się powiedzie

1

Mam certyfikat klienta w Chrome, którego użyłem do zalogowania się w StartSSL. Wyeksportowałem go za pomocą pk12utildo certfile.p12. Teraz chcę go używać do podpisywania za pomocą S / MIME.

Przekonwertowałem p12plik na pem.

Najpierw sprawdzam, czy certyfikat będzie działał w tym celu:

$ openssl verify -purpose smimesign -verbose -CAfile ca-bundle.crt certfile.pem
certfile.pem: OK

Teraz próbuję podpisać:

$ echo "lol" | openssl smime -sign -CAfile ca-bundle.crt -signer certfile.pem
unable to load signing key file
3074062600:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: ANY PRIVATE KEY

Jeśli użyję oryginalnego p12pliku, to też nie działa, ale z innym komunikatem o błędzie:

$ openssl verify -purpose smimesign -verbose -CAfile ca-bundle.crt certfile.p12
unable to load certificate
3074066696:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: TRUSTED CERTIFICATE

Co powinienem zrobić, aby podpisywać wiadomości za pomocą bezpłatnych certyfikatów StartSSL?

Janus Troelsen
źródło
catplik certfile.pem. Powinien mieć -----BEGIN CERTIFICATE-----i przyjaciół. Ponadto openssl smime -sign może to nie być konieczne, -CAfile ca-bundle.crtponieważ nie weryfikujesz podpisu.
jww

Odpowiedzi:

3

Zapomniałem -nodesflagi podczas robienia pem. Obejmuje to klucz prywatny.

openssl pkcs12 -in certfile.p12 -nodes -out certfile2.pem

To pemmoże być użyty do podpisania.

Janus Troelsen
źródło
Prawdopodobnie powinieneś zaznaczyć swoją odpowiedź jako zaakceptowaną, aby inni wiedzieli, że to była poprawka.
jww