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.
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
-
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
-
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
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:
-
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);
-
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
-
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
yHSM_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
-
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
yHSM_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