2014-04-24 13 views
6

Ich fragte mich, ob es eine Möglichkeit gäbe, meine eigene Keytab in Java zu generieren, ohne zum kdc zu gehen? Ich fand Code ähnlich wie diese in einem ApachDS Test:Kann ich meine eigene Keytab programmatisch in Java generieren?

Keytab keytab = Keytab.getInstance(); 
    KerberosTime timeStamp = new KerberosTime(KerberosUtils.UTC_DATE_FORMAT.parse("20070217235745Z")); 

    Map<EncryptionType, EncryptionKey> keys = KerberosKeyFactory 
     .getKerberosKeys(principalName, userPassword); 



    KeytabEntry keytabEntry = new KeytabEntry(
     principalName, 
     1L, 
     timeStamp, 
     (byte) 0, 
     keys.get(EncryptionType.DES_CBC_MD5)); 

    List<KeytabEntry> entry = Arrays.asList(keytabEntry); 

    keytab.setEntries(entry); 

    keytab.write(keytabFile); 

    return keytabFile; 

Ich bin auf einem keytab zu einem klist der Lage, die ich schaffen: Haupt Datum Aliases

0 des-CBC

Vno Typ md5 ssh/[email protected] 2007-02-17

Auch, wenn das nicht möglich ist, gibt es eine Möglichkeit, programmgesteuert eine Schlüsseltabelle mit ApacheDS oder einer anderen Java-Bibliothek zu erhalten?

Antwort

1

Sie müssen 3 Dinge in einem Chiffrierschlüssel für jeden enctype Speicher im KDC für den Prinzipal haben.

  1. Der Hauptname

  2. Der Schlüsselwert

  3. Der Schlüssel Versionsnummer

Die ersten beiden Sie neu erstellen können, wenn Sie das Kennwort für das Haupt wissen jedoch Die letzte erfordert, dass Sie das KDC kontaktieren. Sie müssen auch das Kennwort verwenden, um alle im KDC vorhandenen Enktypes zu erstellen. Was Sie tun wollen, ist theoretisch möglich, aber in der Praxis ist es sehr schwer zu erreichen. Wenn Sie in der Schlüsseltabelle knvo = 0 verwenden, bedeutet dies "versuchen Sie diesen Schlüssel gegen eine beliebige Versionsnummer", wodurch Sie die meisten Probleme lösen können.

Was nur mit dem Prinzipal und dem Kennwort erreichbar sein könnte, ist "Bootstrap" der Prozess. Wenn Sie eine Schlüsseltabelle mit mindestens einem funktionierenden Schlüssel erhalten, sollten Sie in der Lage sein, diese Schlüsseltabelle zu verwenden, um die Schlüsseltabelle mit neuen Versionen aller Schlüssel aus dem KDC zu aktualisieren, die Systemdienstprogramme wie Ktutil verwenden.

Als eine Randnotiz: des-cbc-md5 sollte nicht als eine Art verwendet werden, wenn es überhaupt möglich ist, kann es brachiale Gewalt mit sehr moderaten Hardware-Ressourcen in diesen Tagen geknackt werden.

Leider variieren die Kadmin-Protokolle zum Herunterladen von Keytabs zwischen den Versionen von Kerberos und ich weiß nicht, ob sie Java-APIs haben.

Verwandte Themen