JCE konfigurieren

Verwenden Sie die Informationen in den folgenden Themen, um den JCE-Provider für dedizierte Schlüsselverwaltung zu konfigurieren.

Umgebungsvariable für den JCE-Provider festlegen

Legen Sie die folgende Umgebungsvariable für die Verwendung des JCE-Providers fest:

LD_LIBRARY_PATH: Diese Variable muss den Pfad zu dem Verzeichnis enthalten, das die Datei ocidkmsjca.so enthält. Mit dieser Variablen kann JCE die nativen Java-Librarys finden, die für die Kommunikation mit dem HSM erforderlich sind. Bei Standardinstallationen lautet das Verzeichnis /opt/oci/hsm/lib.

JCE-Provider zu Java Security hinzufügen

Sie müssen den JCE-Provider mit einer der in diesem Abschnitt beschriebenen Methoden zur Java-Sicherheitskonfiguration für Ihr System hinzufügen.

So bearbeiten Sie die Java Security-Datei:

Fügen Sie in der JAVA_HOME den OCI Dedicated KMS-Sicherheitsprovider am Ende der Liste der Sicherheitsprovider hinzu. Der Mitarbeitereintrag lautet wie folgt:

security.provider.<list-number>=com.oracle.dkms.jce.provider.DedicatedKmsProvider
  1. Öffnen Sie die Datei java.security in einem Editor. Beispiel: Führen Sie diesen Befehl aus, um die Datei im VIM-Editor zu öffnen:

    $ vim /usr/lib/jvm/java-11-openjdk/conf/security/java.security
  2. Fügen Sie den Eintrag am Ende der Liste der Sicherheitsprovider in der Datei hinzu. Im folgenden Beispiel wird der Eintrag als security.provider.13 hinzugefügt:

    $ vim /usr/lib/jvm/java-11-openjdk/conf/security/java.security
    security.provider.1=SUN
    security.provider.2=SunRsaSign
    security.provider.3=SunEC
    security.provider.4=SunJSSE
    security.provider.5=SunJCE
    security.provider.6=SunJGSS
    security.provider.7=SunSASL
    security.provider.8=XMLDSig
    security.provider.9=SunPCSC
    security.provider.10=JdkLDAP
    security.provider.11=JdkSASL
    security.provider.12=SunPKCS11
    security.provider.13=com.oracle.dkms.jce.provider.DedicatedKmsProvider
So laden Sie den JCE-Provider dynamisch in Java-Anwendungen

Verwenden Sie die Methode addProvider in der Java-Klasse "Sicherheit", um den JCE-Provider wie folgt hinzuzufügen:

DedicatedKmsProvider provider =  new DedicatedKmsProvider();
Security.addProvider(provider);

Weitere Informationen finden Sie in der Java-Dokumentation unter addProvider.

Authentifizierung

Benutzer werden für die Anmeldung beim HSM durch Zugangsdaten authentifiziert, die aus mehreren Quellen in einer bestimmten Prioritätsreihenfolge abgerufen werden. Wenn in einer Quelle gültige Zugangsdaten gefunden werden, wird die Anmeldung abgeschlossen. Wenn keine gültigen Zugangsdaten gefunden werden, schlägt die Anmeldung fehl.

Zugangsdatenquellen und Prioritätsreihenfolge

Anmeldedaten werden über die folgenden Mechanismen bereitgestellt:

  1. CallbackHandler: Wenn dies angegeben wird, werden Zugangsdaten dynamisch abgerufen. Beispiel:

    public class CustomCallbackHandler implements CallbackHandler {
        private final String username;
        private final char[] password;
     
        public CustomCallbackHandler(String username, char[] password) {
            this.username = username;
            this.password = password;
        }
     
        @Override
        public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
            for (Callback callback : callbacks) {
                if (callback instanceof NameCallback) {
                    ((NameCallback) callback).setName(username);
                } else if (callback instanceof PasswordCallback) {
                    ((PasswordCallback) callback).setPassword(password);
                } else {
                    throw new UnsupportedCallbackException(callback, "Unsupported callback type");
                }
            }
        }
    }            
    
    DedicatedKmsProvider provider = new DedicatedKmsProvider();
    Security.addProvider(provider);
    CustomCallbackHandler handler = new CustomCallbackHandler(crypto_user, cupassword.toCharArray());
    provider.login(null, handler);
  2. HsmCredentials.properties-Datei: Die Anwendung sucht im Classpath nach einer Eigenschaftendatei namens HsmCredentials.properties. Wenn die Datei vorhanden ist und gültige Zugangsdaten enthält, werden sie zur Authentifizierung verwendet. Diese Datei muss Folgendes enthalten:

    • HSM_USER = crypto_user
    • HSM_PASSWORD = cupassword
  3. Java-Systemeigenschaften: Wenn die Zugangsdaten in der Eigenschaftendatei nicht gefunden werden, werden die Java-Systemeigenschaften geprüft. Es wird erwartet, dass die Werte HSM_USER und HSM_PASSWORD als Systemeigenschaften festgelegt werden. Sie können diese mit -D-Flags festlegen, wenn Sie JAVA-Anwendungen ausführen. Beispiel

    -DHSM_USER=crypto_user 
    -DHSM_PASSWORD=cupassword
  4. Betriebssystemumgebungsvariablen (niedrigste Priorität): Wenn die Zugangsdaten in den Java-Systemeigenschaften nicht gefunden werden, können sie aus Umgebungsvariablen abgerufen werden, wenn die Umgebungsvariablen festgelegt sind. Legen Sie die Werte HSM_USER und HSM_PASSWORD als Umgebungsvariablen fest, und exportieren Sie sie dann wie im folgenden Beispiel dargestellt:

    export HSM_USER=crypto_user 
    export HSM_PASSWORD=cupassword