2012-03-18 10 views
5

Bir 'Storepass' sağlamadan bir KeyStore'dan bir anahtar almak mümkün olup olmadığını bilmem gerek. dokümantasyon here "anahtar deposundan bilgi alırken, şifre isteğe bağlıdır şifre verilmesi halinde, alınan bilgilerin bütünlüğü kontrol edilemez ve bir uyarı görüntülenir" söylüyorKeyStore şifre olmadan anahtarı alın

Ancak çalıştığımda Parola olmadan Anahtar olsun olsun "java.lang.IllegalArgumentException: parola null olamaz" özel durum.

ardından ben anahtar deposunu

keytool -genseckey -Alias ​​"myKey" -keystore KEYSTORE.jks -storepass "parola" -storetype "JCEKS" -keyalg AES -keysize oluşturulan nasıl 128

Ve şu istisna atar

final KeyStore keyStore = KeyStore.getInstance("JCEKS"); 
keyStore.load(new FileInputStream(new File("C:\\temp\\keytool\\KEYSTORE.jks")), 
    null); 
final Key key = keyStore.getKey("myKey", null); 

şöyle geri almak için çalıştı

java.lang.IllegalArgumentException: password can't be null 
at com.sun.crypto.provider.SunJCE_z.<init>(DashoA13*..) 
at com.sun.crypto.provider.JceKeyStore.engineGetKey(DashoA13*..) 
at java.security.KeyStore.getKey(KeyStore.java:763) 

Belgeleri tamamen yanlış anlamış mıyım? Bu konuda başka bir yol var, çünkü 'mağaza geçişini' saklamak noktasını herkesin görebileceği kodumda net olarak göremiyorum, bu yüzden şifreyi işe yaramaz hale getiriyorum.

cevap

4

storepass (özel anahtara erişmek için kullanılır) sağlanmazsa, keypass, yani sağladığınız anahtar deposu parolasını kullanmayı deneyecektir.
Bu nedenle, istisnayı alırsınız. Komut satırında seçeneği belirtmek yoksa

bir -keypass seçeneği için, keytool ilk çalışacaktır:
Sen hemkeypass ve storepass boş senin bağlantısından
olamaz Ben d yanlış yaptım gibi özel/gizli anahtarı kurtarmak için anahtar deposu parolasını kullanın ve bu başarısız olursa, o zaman özel/gizli anahtar şifre

+0

Evet için isteyecektir görünüyor ocumentation. Bunun için tavsiye edilen bir tavsiye var mı? Sadece kodda böyle bir şifre olamaz. Teşekkürler – Nishant

+0

Yani, koddaki şifrelenmiş şifreyi önlemek için senin sorunun mu? Bu en yaygın problemdir. Bu konuda gerçekten fazla bir şey yapamazsın.Genel olarak önerilen yaklaşım, kullanıcıdan şifre istemektedir. ayrıntılı bir şey yapabildiğiniz gibi Şifreyi şifreleyin ama bu size pek bir şey getirmeyecektir. Ayrıca, dosya sistemini güvenli tutmak için kullanıcıya sorumluluğu da verebilirsiniz. – Cratylus