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.

Pour modifier le fichier de sécurité Java

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
  1. 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
  2. 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
Pour charger dynamiquement le fournisseur JCE dans des applications Java

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 :

  1. 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);
  2. Fichier HsmCredentials.properties : l'application recherche un fichier de propriétés nommé HsmCredentials.properties dans 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
  3. 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_USER et HSM_PASSWORD doivent être définies en tant que propriétés système. Vous pouvez les définir à l'aide des indicateurs -D lors de l'exécution des applications java. Exemple

    -DHSM_USER=crypto_user 
    -DHSM_PASSWORD=cupassword
  4. 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_USER et HSM_PASSWORD en tant que variables d'environnement, puis exportez-les comme indiqué dans l'exemple suivant :

    export HSM_USER=crypto_user 
    export HSM_PASSWORD=cupassword