Jak konwertować.plik pfx do keystore z kluczem prywatnym?
Muszę podpisać aplikację na Androida (.apk
).
Mam plik .pfx
. Przekonwertowałem go do pliku .cer
przez Internet Explorer, a następnie przekonwertowałem .cer
na .keystore
za pomocą keytool. Więc próbowałem podpisać .apk
z jarsignerem, ale tak jest napisane .keystore nie zawiera klucza prywatnego.
6 answers
Korzystanie z JDK 1.6 lub nowszego
Justin zauważył w komentarzach, że keytool jest w stanie to zrobić używając następującego polecenia (chociaż tylko w JDK 1.6 i późniejszych):
keytool -importkeystore -srckeystore mypfxfile.pfx -srcstoretype pkcs12
-destkeystore clientcert.jks -deststoretype JKS
Korzystanie z JDK 1.5 lub poniżej
OpenSSL potrafi wszystko. Ta odpowiedź na JGuru jest najlepszą metodą jaką do tej pory znalazłem.Najpierw upewnij się, że masz zainstalowany OpenSSL. Wiele systemów operacyjnych już go ma zainstalowane tak, jak znalazłem z Mac OS X.
Następujące dwa polecenia konwertują plik pfx do formatu, który można otworzyć jako magazyn kluczy Java PKCS12:
openssl pkcs12 -in mypfxfile.pfx -out mypemfile.pem
openssl pkcs12 -export -in mypemfile.pem -out mykeystore.p12 -name "MyCert"
Zauważ, że nazwa podana w drugim poleceniu jest aliasem Twojego klucza w nowym magazynie kluczy.
Możesz zweryfikować zawartość magazynu kluczy za pomocą narzędzia Java keytool za pomocą następującego polecenia:
keytool -v -list -keystore mykeystore.p12 -storetype pkcs12
Wreszcie, jeśli potrzebujesz, możesz przekonwertować to do magazynu kluczy JKS, importując magazyn kluczy utworzone powyżej do nowego magazynu kluczy:
keytool -importkeystore -srckeystore mykeystore.p12 -destkeystore clientcert.jks -srcstoretype pkcs12 -deststoretype JKS
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-31 09:52:48
Jarsigner może użyć pliku pfx jako klucza do podpisywania jar. Upewnij się, że Twój plik pfx zawiera klucz prywatny i łańcuch cert podczas eksportowania. Nie ma potrzeby konwersji do innych formatów. Sztuczka polega na tym, aby uzyskać Alias Twojego pliku pfx:
keytool -list -storetype pkcs12 -keystore your_pfx_file -v | grep Alias
Gdy już masz swój alias, podpisywanie jest łatwe
jarsigner.exe -storetype pkcs12 -keystore pfx_file jar_file "your alias"
Powyższe dwa polecenia zapytają Cię o hasło określone w pfx export. Jeśli chcesz, aby Twoje hasło wisiało czystym tekstem, użyj - storepass switch before the -keystore switch
Po podpisaniu podziwiaj swoją pracę:
jarsigner.exe -verify -verbose -certs yourjarfile
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-04 17:00:36
Znalazłem tę stronę, która mówi, jak zaimportować PFX do JKS (Java Key Store):
keytool -importkeystore -srckeystore PFX_P12_FILE_NAME -srcstoretype pkcs12 -srcstorepass PFX_P12_FILE -srcalias SOURCE_ALIAS -destkeystore KEYSTORE_FILE -deststoretype jks -deststorepass PASSWORD -destalias ALIAS_NAME
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-23 01:22:00
Twój plik PFX powinien zawierać klucz prywatny. Wyeksportuj klucz prywatny i certyfikat bezpośrednio z pliku PFX (np. używając OpenSSL) i zaimportuj je do klucza Java.
Edit
Dalsze informacje:
- Pobierz OpenSSL Dla Windows tutaj .
- eksport klucza prywatnego:
openssl pkcs12 -in filename.pfx -nocerts -out key.pem
- świadectwo wywozowe:
openssl pkcs12 -in filename.pfx -clcerts -nokeys -out cert.pem
- Importuj klucz prywatny i certyfikat do magazynu Keystore Java za pomocą
keytool
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-18 20:05:42
Justin (powyżej) jest dokładny. Należy jednak pamiętać, że w zależności od tego, od kogo otrzymujesz certyfikat (pośredni CA, główny CA zaangażowany lub nie) lub jak pfx jest tworzony/eksportowany, czasami może brakować łańcucha certyfikatów. Po zaimportowaniu będziesz miał certyfikat typu PrivateKeyEntry, ale z łańcuchem o długości 1.
Aby to naprawić, istnieje kilka opcji. Łatwiejszą opcją w moim umyśle jest import i eksport pliku pfx w IE (wybierając opcję włączenia wszystkie certyfikaty w łańcuchu). Proces importu i eksportu certyfikatów w IE powinien być bardzo łatwy i dobrze udokumentowany gdzie indziej.
Po wyeksportowaniu, zaimportuj keystore zgodnie z wskazaniem Justina powyżej. Teraz będziesz miał keystore z certyfikatem typu PrivateKeyEntry i łańcuchem certyfikatów o długości większej niż 1.
Błąd niektórych klientów usług internetowych opartych na. Net (nie można nawiązać relacji zaufania), jeśli nie wykonasz powyższego.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-07 23:14:33
Jeśli pracujesz z JDK 1.5 lub poniżej, narzędzie keytool nie będzie miało opcji -importkeystore
(zobacz JDK 1.5 dokumentacja keytool), a rozwiązanie MikeD będzie dostępne tylko przez przeniesienie .pfx
na komputer z nowszym JDK (1.6 lub nowszym).
Inną opcją w JDK 1.5 lub poniżej (jeśli masz produkt Oracle WebLogic), jest wykonanie instrukcji z tego dokumentu Oracle: przy użyciu formatów certyfikatów PFX i pem z kluczami .
Opisuje konwersję na Format .pem
, Jak wyodrębnić informacje o certyfikatach z tego formatu tekstowego i zaimportować je do formatu .jks
za pomocą narzędzia java utils.ImportPrivateKey
(jest to narzędzie dołączone do produktu WebLogic).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-13 13:16:58