2014-05-13 84 views
9

Eksperymentuję z mechanizmem warunkowych uprawnień OSGi. Dokładniej, próbuję użyć org.osgi.service.condpermadmin.BundleSignerCondition, aby ograniczyć, które pakunki mogą zostać uruchomione. Dokumentacja Mam oświadczenie, że aby użyć tego uprawnienia, muszę określić ścieżkę do magazynów kluczy JKS przy użyciu właściwości konfiguracyjnych struktury org.osgi.framework.trust.repositories. Jednak ta sama dokumentacja wspomina, że ​​JKS wymieniony w tej właściwości nie może mieć hasła. Pytanie brzmi: jak stworzyć JKS bez hasła? Narzędzie Keytool odmawia utworzenia JKS z pustym hasłem.Czy jest możliwe utworzenie pliku kluczy JKS bez hasła?

Odpowiedz

14

Nie można utworzyć magazynu kluczy z pustym hasłem z keytool od pewnego czasu, ale nadal można to zrobić programowo.

Czytaj cert takiego:

private static Certificate readCert(String path) throws IOException, CertificateException { 
    try (FileInputStream fin = new FileInputStream(path)) { 
     return CertificateFactory.getInstance("X.509").generateCertificate(fin); 
    } 
} 

nie tworzyć magazynu kluczy z pustym hasłem jak ten:

try { 
    // Reading the cert 
    Certificate cert = readCert("/tmp/cert.cert"); 

    // Creating an empty JKS keystore 
    KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType()); 
    keystore.load(null, null); 

    // Adding the cert to the keystore 
    keystore.setCertificateEntry("somecert", cert); 

    // Saving the keystore with a zero length password 
    FileOutputStream fout = new FileOutputStream("/tmp/keystore"); 
    keystore.store(fout, new char[0]); 
} catch (GeneralSecurityException | IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

uruchom polecenie:

keytool -list -keystore keystore 

Będzie poprosić o hasło, ale możesz po prostu nacisnąć klawisz Enter. Otrzymasz następujące ostrzeżenie, ale zawartość magazynu kluczy zostanie wymieniona:

***************** WARNING WARNING WARNING ***************** 
* The integrity of the information stored in your keystore * 
* has NOT been verified! In order to verify its integrity, * 
* you must provide your keystore password.     * 
***************** WARNING WARNING WARNING ***************** 

To może działać dla Ciebie.