Mam plik PKCS12 zawierający pełny łańcuch certyfikatów i klucz prywatny. Muszę podzielić go na 3 pliki dla aplikacji. Potrzebne mi są 3 pliki (w formacie PEM):
- niezaszyfrowany plik klucza
- plik certyfikatu klienta
- plik certyfikatu CA (root i wszystkie pośrednie)
Jest to typowe zadanie, które muszę wykonać, dlatego szukam sposobu na zrobienie tego bez ręcznej edycji danych wyjściowych.
Próbowałem następujące:
openssl pkcs12 -in <filename.pfx> -nocerts -nodes -out <clientcert.key>
openssl pkcs12 -in <filename.pfx> -clcerts -nokeys -out <clientcert.cer>
openssl pkcs12 -in <filename.pfx> -cacerts -nokeys -chain -out <cacerts.cer>
Działa to dobrze, jednak dane wyjściowe zawierają atrybuty torby, których aplikacja nie wie, jak sobie z tym poradzić.
Po kilku poszukiwaniach znalazłem sugerowane rozwiązanie przekazania wyników przez x509 w celu usunięcia atrybutów torby.
openssl x509 -in <clientcert.cer> -out <clientcert.cer>
To działa, ale mam problem z plikiem cacert. Plik wyjściowy zawiera tylko jeden z 3 certyfikatów w łańcuchu.
Czy istnieje sposób na uniknięcie włączenia atrybutów bag do danych wyjściowych komendy pkcs12, czy sposób, aby dane wyjściowe komendy x509 obejmowały wszystkie certyfikaty? Dodatkowo, jeśli uruchomienie go przez x509 jest najprostszym rozwiązaniem, czy istnieje sposób na przesłanie danych wyjściowych z pkcs12 do x509 zamiast dwukrotnego zapisywania pliku?