Creando la base de datos

A continuación se explica cómo configurar su base de datos y crear índices de base de datos.

Para maximizar el rendimiento, EJBCA se ejecuta con el bloqueo optimista activado, lo que sacrifica las transacciones concurrentes en la misma fila de la base de datos en lugar de viajes de ida y vuelta más cortos. Si conecta varias instancias de EJBCA al mismo esquema de base de datos, asegúrese de que no actualicen las mismas entidades finales simultáneamente; de lo contrario, se intentarán escribir datos en filas de tabla sucias y, por lo tanto, se producirán transacciones fallidas.

Configuración de la base de datos

Cree una base de datos y un usuario de base de datos según los siguientes ejemplos para MariaDB/MySQL , Oracle XE y PostgreSQL .

MariaDB/MySQL

En MariaDB, use los siguientes comandos para crear la base de datos, haciendo coincidir el DataSource en el siguiente paso, y agregue privilegios para conectarse a la base de datos:

$ mysql -u root -p
mysql> CREATE DATABASE ejbca CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
mysql> GRANT ALL PRIVILEGES ON ejbca.* TO 'ejbca' @ 'localhost' IDENTIFIED BY 'ejbca' ;

Debe definir contraseñas seguras para su base de datos en producción. También puede mejorar la seguridad limitando el acceso a las tablas. Para obtener más información, consulte Privilegios de base de datos .

Si no se configura UTF-8 como conjunto de caracteres, es posible que EJBCA no se inicie debido a limitaciones de índice si se usa el conjunto de caracteres predeterminado UTF-8MB4 en algunas configuraciones de MariaDB/MySQL. Esto generará el siguiente error: La clave especificada era demasiado larga; la longitud máxima de la clave es de 767 bytes.

Por lo tanto, puedes utilizar un comando como el siguiente:

CREATE DATABASE ejbca CHARACTER SET utf8 COLLATE utf8_unicode_ci;

En algunas configuraciones de InnoDB, el valor predeterminado de binlog_format es statement . Al ejecutar EJBCA, se requiere que esté configurado como row . Por ejemplo: binlog_format=row

MySQL versión 8 o posterior

A partir de la versión 8 de MySQL, no se pueden crear usuarios implícitamente con el comando GRANT. Si utiliza MySQL versión 8 o posterior, cree primero el usuario ejbca según el siguiente ejemplo:

mysql> CREATE USER 'ejbca' @ 'localhost' IDENTIFIED BY 'ejbca' ;
mysql> GRANT ALL PRIVILEGES ON ejbca.* TO 'ejbca' @ 'localhost' ;

Base de datos Oracle

Conectarse a la base de datos

Conéctese a la base de datos Oracle utilizando sqlplus (o una herramienta similar) como sysdba.

# Depending on your setup, you would either use SID or ServiceName for connection URL.
# url:port:SID or url:port/ServiceName
# For XE version 11g for example, you can login to the database using following command.
sqlplus sys/<your password>@ //localhost :1521 /XE as sysdba

Si no está seguro acerca de los servicios y SID disponibles en su instalación, puede utilizar los comandos lsnrctl (Listener Control) " lsnrctl status " o "lsnrctl service" para obtener más información.

Crear usuario ejbca

Para crear un usuario ejbca:

CREATE USER ejbca IDENTIFIED BY ejbca;

La arquitectura multiinquilino se introdujo a partir de Oracle Database 12c. Si utiliza Oracle 19c y tiene problemas de conexión después de crear el usuario ejbca , pruebe lo siguiente:

# Use the following command to check connections and PDB's available:
SHOW con_name;
SHOW pdbs;
# Alternatively, create the user in container.
ALTER SESSION SET container = YOUR_CONTAINER_NAME;
CREATE USER ejbca IDENTIFIED BY ejbca;

Conceder permisos

# Permissions which must be granted to ejbca user:
GRANT CREATE SESSION TO ejbca;
GRANT CREATE TABLE TO ejbca;
GRANT CREATE VIEW TO ejbca;
GRANT CREATE ANY TRIGGER TO ejbca;
GRANT CREATE ANY PROCEDURE TO ejbca;
GRANT CREATE SEQUENCE TO ejbca;
GRANT CREATE SYNONYM TO ejbca;
GRANT UNLIMITED TABLESPACE TO ejbca;

Configurar EJBCA

En el lado EJBCA, en el archivo database.properties , configure los siguientes parámetros:

database.name=oracle
# Use url:port:SID or url:port/ServiceName format mentioned above.
database.url=jdbc:oracle:thin:@oracledb:1521:XE
database.driver=oracle.jdbc.driver.OracleDriver
database.username=ejbca
database.password=ejbca

PostgreSQL

  1. Después de instalar la base de datos PostgreSQL, configure la autenticación del cliente para las conexiones de socket de dominio UNIX local desde peer a md5 :

    $ sudo vi /etc/postgresql/ 10 /main/pg_hba.conf
    # "local" is solo for Unix domain socket connections only
    local all all md5

    imágenes/s/-2y7bau/8703/189cb2l/_/imagenes/iconos/emoticonos/advertencia.svg Si el archivo pg_hba.conf no se encuentra en la ruta /etc/postgresql/10/main/pg_hba.conf, inicie sesión en la CLI de PostgreSQL y use lo siguiente para encontrar la ubicación del archivo:

    SHOW hba_file;
  2. Reinicie el servicio PostgreSQL:

    $ sudo systemctl restart postgresql
  3. Inicie sesión en el usuario postgres y asigne una contraseña:

    $ sudo -i -u postgres
    $ createuser ejbca_user -P
  4. Crea una nueva base de datos y un nombre de usuario:

    $ createdb ejbcadb -O ejbca_user
    $ logout
  5. Crear tablas e índices EJBCA:

    $ psql -U ejbca_user -W ejbcadb
    > psql -hlocalhost -U ejbca_user -d ejbcadb < /opt/ejbca/doc/sql-scripts/create-tables-ejbca-postgres.sql
    > psql -hlocalhost -U ejbca_user -d ejbcadb < /opt/ejbca/doc/sql-scripts/create-index-ejbca.sql
    > \q

Crear índices de bases de datos

A medida que la base de datos crece, es importante tener índices de base de datos correctos para mantener un buen rendimiento.

El siguiente archivo SQL que está listo para ejecutarse en su base de datos contiene un conjunto de índices de base de datos recomendados que se pueden aplicar a su base de datos:

  • doc/sql-scripts/crear-índice-ejbca.sql .

Si tiene confianza en su trabajo, también puede aplicar particiones y compresión. El siguiente archivo de ejemplo SQL, proporcionado para MariaDB/MySQL, debe analizarse para su carga de trabajo específica y los procesos de mantenimiento de la base de datos, y no aplicarse a ciegas:

  • doc/sql-scripts/optimizar-ejbca-mysql.sql

La aplicación de particiones y compresión puede causar efectos adversos si se utilizan incorrectamente.

EJBCA funcionará bien sin esta optimización y puede ignorarse para la mayoría de las instalaciones.

Próximo paso: configuración del servidor de aplicaciones

Para obtener más información sobre cómo configurar el servidor de aplicaciones, consulte Servidores de aplicaciones.