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.
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-
Ö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 -
Fügen Sie den Eintrag am Ende der Liste der Sicherheitsprovider in der Datei hinzu. Im folgenden Beispiel wird der Eintrag als
security.provider.13hinzugefü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
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:
-
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); -
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
-
Java-Systemeigenschaften: Wenn die Zugangsdaten in der Eigenschaftendatei nicht gefunden werden, werden die Java-Systemeigenschaften geprüft. Es wird erwartet, dass die Werte
HSM_USERundHSM_PASSWORDals 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 -
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_USERundHSM_PASSWORDals Umgebungsvariablen fest, und exportieren Sie sie dann wie im folgenden Beispiel dargestellt:export HSM_USER=crypto_user export HSM_PASSWORD=cupassword