Configurer JCE
Utilisez les informations des rubriques suivantes pour configurer le fournisseur JCE Dedicated Key Management.
Définition de la variable d'environnement pour le fournisseur JCE
Définissez la variable d'environnement suivante pour utiliser le fournisseur JCE :
LD_LIBRARY_PATH : cette variable doit inclure le chemin du répertoire contenant le fichier ocidkmsjca.so. L'utilisation de cette variable permet à JCE de trouver les bibliothèques java natives requises pour communiquer avec le module HSM. Pour les installations standard, le répertoire est /opt/oci/hsm/lib.
Ajouter le fournisseur JCE à la sécurité Java
Vous devez ajouter le fournisseur JCE à la configuration de sécurité Java de votre système à l'aide de l'une des méthodes décrites dans cette section.
Dans JAVA_HOME, ajoutez le fournisseur de sécurité OCI Dedicated KMS à la fin de la liste des fournisseurs de sécurité. L'entrée du soignant est la suivante :
security.provider.<list-number>=com.oracle.dkms.jce.provider.DedicatedKmsProvider-
Ouvrez le fichier java.security dans un éditeur. Par exemple, exécutez cette commande pour ouvrir le fichier dans l'éditeur VIM :
$ vim /usr/lib/jvm/java-11-openjdk/conf/security/java.security -
Ajoutez l'entrée à la fin de la liste des fournisseurs de sécurité dans le fichier. Dans l'exemple suivant, l'entrée est ajoutée en tant que
security.provider.13:$ 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
Utilisez la méthode addProvider de la classe Java Sécurité pour ajouter le fournisseur JCE, comme suit :
DedicatedKmsProvider provider = new DedicatedKmsProvider();
Security.addProvider(provider);
Pour plus d'informations, reportez-vous à addProvider dans la documentation Java.
Authentification
Les utilisateurs sont authentifiés pour la connexion au module HSM par des informations d'identification qui sont extraites de plusieurs sources dans un ordre de priorité spécifique. Si des informations d'identification valides sont trouvées dans une source, la connexion est terminée. Si aucune information d'identification valide n'est trouvée, la connexion échoue.
Sources des informations d'identification et ordre de priorité
Les informations d'identification de connexion sont fournies par les mécanismes suivants :
-
CallbackHandler : si cette option est fournie, elle extrait les informations d'identification de manière dynamique. Exemple :
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); -
Fichier HsmCredentials.properties : l'application recherche un fichier de propriétés nommé
HsmCredentials.propertiesdans la variable d'environnement CLASSPATH. Si le fichier existe et contient des informations d'identification valides, elles sont utilisées pour l'authentification. Ce fichier doit contenir les éléments suivants :- HSM_USER = crypto_user
- HSM_PASSWORD = mot-clé cupassword
-
Propriétés du système Java : si les informations d'identification sont introuvables dans le fichier de propriétés, les propriétés du système Java sont vérifiées. Les valeurs
HSM_USERetHSM_PASSWORDdoivent être définies en tant que propriétés système. Vous pouvez les définir à l'aide des indicateurs-Dlors de l'exécution des applications java. Exemple-DHSM_USER=crypto_user -DHSM_PASSWORD=cupassword -
Variables d'environnement du système d'exploitation (priorité la plus faible) : si les informations d'identification sont introuvables dans les propriétés du système Java, elles peuvent être extraites des variables d'environnement, si les variables d'environnement sont définies. Définissez les valeurs
HSM_USERetHSM_PASSWORDen tant que variables d'environnement, puis exportez-les comme indiqué dans l'exemple suivant :export HSM_USER=crypto_user export HSM_PASSWORD=cupassword