Configuración de JCE

Utilice la información de los siguientes temas para configurar el proveedor de JCE de gestión de claves dedicadas.

Definición de la Variable de Entorno para JCE Provider

Defina la siguiente variable de entorno para utilizar JCE Provider:

LD_LIBRARY_PATH: esta variable debe incluir la ruta al directorio que contiene el archivo ocidkmsjca.so. El uso de esta variable permite a JCE encontrar las bibliotecas java nativas necesarias para comunicarse con el HSM. Para instalaciones estándar, el directorio es /opt/oci/hsm/lib.

Adición de JCE Provider a Java Security

Debe agregar el proveedor de JCE a la configuración de seguridad de Java para el sistema mediante cualquiera de los métodos descritos en esta sección.

Para editar el archivo de seguridad Java

En JAVA_HOME, agregue el proveedor de seguridad de KMS dedicado de OCI al final de la lista de proveedores de seguridad. La entrada de profesional asistencial es la siguiente:

security.provider.<list-number>=com.oracle.dkms.jce.provider.DedicatedKmsProvider
  1. Abra el archivo java.security en un editor. Por ejemplo, ejecute este comando para abrir el archivo en el editor VIM:

    $ vim /usr/lib/jvm/java-11-openjdk/conf/security/java.security
  2. Agregue la entrada al final de la lista de proveedores de seguridad en el archivo. En el siguiente ejemplo, la entrada se agrega como 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
Para cargar dinámicamente el proveedor de JCE en aplicaciones Java

Utilice el método addProvider de la clase Java de seguridad para agregar JCE Provider, de la siguiente forma:

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

Consulte addProvider en la documentación de Java para obtener más información.

Identificación

Los usuarios se autentican para iniciar sesión en el HSM mediante credenciales que se recuperan de varios orígenes en un orden de prioridad específico. Si se encuentran credenciales válidas en cualquier origen, se completa la conexión. Si no se encuentran credenciales válidas, el inicio de sesión falla.

Orígenes de Credenciales y Orden de Prioridad

Las credenciales de inicio de sesión se proporcionan mediante los siguientes mecanismos:

  1. CallbackHandler: si se proporciona, recupera las credenciales de forma dinámica. Por ejemplo:

    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. archivo HsmCredentials.properties: la aplicación busca un archivo de propiedades denominado HsmCredentials.properties en la classpath. Si el archivo existe y contiene credenciales válidas, se utilizan para la autenticación. Este archivo debe contener lo siguiente:

    • HSM_USER = crypto_user
    • HSM_PASSWORD = palabra clave
  3. Propiedades del sistema Java: si no se encuentran las credenciales en el archivo de propiedades, se comprueban las propiedades del sistema Java. Se espera que los valores HSM_USER y HSM_PASSWORD se definan como propiedades del sistema. Puede definirlos mediante indicadores -D al ejecutar aplicaciones java. Por ejemplo:

    -DHSM_USER=crypto_user 
    -DHSM_PASSWORD=cupassword
  4. Variables de entorno del sistema operativo (prioridad más baja): si no se encuentran las credenciales en las propiedades del sistema Java, se pueden recuperar de las variables de entorno, si se definen las variables de entorno. Defina los valores HSM_USER y HSM_PASSWORD como variables de entorno y, a continuación, exporte los valores como se muestra en el siguiente ejemplo:

    export HSM_USER=crypto_user 
    export HSM_PASSWORD=cupassword