Przygody z openssl

Do połączenia z pewnym webservicem potrzebuję podać certyfikat (oczywiście aplikacja w Railsach), aplikacja jest tak zaprojektowana, że przyjmuje tylko certyfikat PKCS12. Nie jest to może dobry wybór na certyfikat ale taki jest a nie inny. I sprawa wyglada tak, data ważności certfikatu, który do tej pory był wykorzystywany już upłyneła. Dostałem nowy plik, ale tylko z częścią certyfikatu, bez klucza prywatnego. Po części jest to zrozumiałem, ale z drugiej strony, dostęp do webservica jest na tyle ograniczony, że nic nie stałoby na przeszkodzie gdybym dostał cały plik PKCS12. Niestety tamci programiści są jakby zamknięci w bańce mydlanej i cieżko cokolwiek od nich uzyskać, dlatego mam nadzieję, że tutaj znajdę pomoc w rozwiązaniu problemu. To teraz konkrety.

Dysponuje

  • certyfikatem CA
  • starym plikiem z certyfikatem, p12
  • nowym certyfikatem crt

Potrzebuję:

  • wygenerować nowy certyfikat p12

Aby otrzymać klucz publiczny wykorzystałem polecenie, które ze starego certyfikatu p12 wyeksportowało mi klucz:

$ openssl pkcs12 -in old_cert.p12 -nocerts -out private_key.pem

Po podaniu hasła, ustawiłem pewne passphrase

Teraz dysponując już chyba wszystkim co wymagane przystąpiłem do wygenerowania pliku p12 z nowym certyfikatem:

$ openssl pkcs12 -export -in new_cert.crt -inkey private_key.key -out new_cert.p12

Po wpisaniu passphrase wyświetlił mi się komunikat:

No certificate matches private key

Szukałem jakiejś informacji w googlach, ale nie znalazłem rozwiązania mojego problemu.