Configurer JCE
Utilisez les informations des rubriques suivantes pour configurer le fournisseur JCE Dedicated Key Management.
Définir 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 d'accès au répertoire qui contient le fichier ocidkmsjca.so
. L'utilisation de cette variable permet à JCE de trouver les bibliothèques java natives requises pour communiquer avec le module de sécurité matériel. 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 fournisseur 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
dans la classe Java Security pour ajouter le fournisseur JCE, comme suit :
DedicatedKmsProvider provider = new DedicatedKmsProvider();
Security.addProvider(provider);
Pour plus d'informations, voir addProvider dans la documentation sur Java.
Authentification
Les utilisateurs sont authentifiés pour se connecter au module de sécurité matériel par des données d'identification extraites de plusieurs sources dans un ordre de priorité spécifique. Si des données d'identification valides sont trouvées dans n'importe quelle source, la connexion est terminée. Si aucune donnée d'identification valide n'est trouvée, la connexion échoue.
Sources de données d'identification et ordre de priorité
Les données d'identification de connexion sont fournies par les mécanismes suivants :
-
CallbackHandler : Si cette valeur est fournie, les données d'identification sont extraites dynamiquement. Par 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.properties
dans la variable classpath. Si le fichier existe et contient des données 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 de passe
-
Propriétés du système Java : Si les données d'identification ne sont pas trouvées dans le fichier de propriétés, les propriétés du système Java sont vérifiées. Les valeurs
HSM_USER
etHSM_PASSWORD
doivent être définies en tant que propriétés de système. Vous pouvez les définir à l'aide d'indicateurs-D
lors de l'exécution d'applications java. Par exemple-DHSM_USER=crypto_user -DHSM_PASSWORD=cupassword
-
Variables d'environnement de système d'exploitation (priorité la plus faible) : Si les données d'identification ne sont pas trouvées dans les propriétés de système Java, elles peuvent être extraites des variables d'environnement, si les variables d'environnement sont définies. Définissez les valeurs
HSM_USER
etHSM_PASSWORD
en tant que variables d'environnement, puis exportez-les comme illustré dans l'exemple suivant :export HSM_USER=crypto_user export HSM_PASSWORD=cupassword