WildFly 10 / JBoss EAP 7.0

En WildFly, la implementación y la instalación no configuran automáticamente el servidor de aplicaciones. Configure el servidor de aplicaciones según las instrucciones de las siguientes secciones.

Para las partes específicas de Oracle en esta guía, asumimos que ha instalado Oracle XE versión 11g release 2 (se puede descargar desde Oracle Database ) en su máquina y la ha configurado para escuchar en el puerto 1521.

Se desaconseja encarecidamente ejecutar la aplicación con un usuario root debido al riesgo de escalada de privilegios. Ejecutar la instalación como root puede provocar que se otorguen privilegios root a archivos que WildFly no podrá leer posteriormente. En su lugar, se recomienda ejecutar la instalación con el mismo usuario que ejecuta el servidor de aplicaciones.

Agregar controlador de base de datos

MariaDB/MySQL

Agregue el controlador de base de datos MariaDB/MySQL implementándolo en caliente en el directorio de implementación. WildFly lo recogerá e implementará para que podamos crear una fuente de datos inmediatamente. Puede usar un nombre genérico, sin número de versión, para obtener un "driver-name" genérico para el comando de la fuente de datos.

> cp mariadb .jar mariadb-java-client-2.1.0.jar wildfly_home /standalone/deployments/mariadb-java-client

Oracle DB (Oracle XE versión 11g Release 2)

Obtenga la última versión (actualmente ojdbc8.jar) del controlador de base de datos de Oracle e impleméntela en caliente en el directorio de implementación. WildFly la recogerá e implementará.

>cp ojdbc8.jar wildfly_home/standalone/deployments/

En caso de que haya notado un retraso en la implementación de EJBCA al usar Oracle como base de datos, agregue el siguiente parámetro de propiedades del sistema en el archivo standalone.xml:

<propiedades del sistema>
<nombre de propiedad=" jboss.as .management.blocking.timeout" valor="1000"/>
</propiedades-del-sistema>

Esto aumenta el tiempo de espera para la implementación de wildfly y ayuda al implementar EJBCA en la base de datos Oracle.

Cualquier otra base de datos

Copie el controlador JDBC al directorio de implementaciones y tome nota de la clase del controlador y el nombre del controlador que se muestran en el registro del servidor y para su uso posterior al agregar la fuente de datos. Por ejemplo:

... INFO [org.jboss.as.connector.deployers.jdbc] (...) WFLYJCA0005: Deploying non-JDBC-compliant driver class org.postgresql.Driver (version 9.2)
... INFO [org.jboss.as.connector.deployers.jdbc] (...) WFLYJCA0018: Started Driver service with driver-name = postgresql-jdbc3.jar

Aumentar el uso de memoria permitido

De forma predeterminada, solo se permiten 512 MB de almacenamiento dinámico. Edite wildfly_home/bin/standalone.conf para aumentar este valor a un valor más adecuado, por ejemplo:

JAVA_OPTS= "-Xms2048m -Xmx2048m -Djava.net.preferIPv4Stack=true"

Agregar fuente de datos

Agregue una fuente de datos para que EJBCA la utilice.

Inicie JBoss y ejecute dos comandos en la CLI de JBoss. Tenga en cuenta que "-jindi-name" está vinculado al valor de database.properties (valor predeterminado en este ejemplo).

MariaDB/MySQL

> wildfly_home/bin/jboss-cli.sh -c
> data-source add --name=ejbcads --driver-name="mariadb-java-client.jar" --connection-url="jdbc: mysql://127.0.0.1:3306/ejbca " --jndi-name="java:/EjbcaDS" --use-ccm=true --driver-class="org.mariadb.jdbc.Driver" --user-name="ejbca" --password="ejbca" --validate-on-match=true --background-validation=false --prepared-statements-cache-size=50 --share-prepared-statements=true --min-pool-size=5 --max-pool-size=150 --pool-prefill=true --transaction-isolation=TRANSACTION_READ_COMMITTED --check-valid-connection-sql="select 1;"
> :reload

Si está utilizando otro tipo de base de datos, adapte la declaración anterior con el nombre del controlador, la URL de conexión, la clase del controlador y la conexión SQL válida.

Oracle XE versión 11g Release 2

> wildfly_home/bin/jboss-cli.sh -c
> data-source add --name=ejbcads --driver-name= "ojdbc8.jar" --connection-url= "jdbc:oracle:thin:@127.0.0.1:1521:XE" --jndi-name= "java:/EjbcaDS" --use-ccm= true --driver- class = "oracle.jdbc.driver.OracleDriver" --user-name= "ejbca" --password= "ejbca" --validate-on-match= true --background-validation= false --prepared-statements-cache-size= 50 --share-prepared-statements= true --min-pool-size= 5 --max-pool-size= 150 --pool-prefill= true --transaction-isolation=TRANSACTION_READ_COMMITTED --check-valid-connection-sql= "select 1 from dual"
> :reload

Configurar WildFly Remoting

EJBCA necesita usar JBoss Remoting para que la CLI de EJBCA funcione. Lo configuramos para usar un puerto independiente (comience por eliminar cualquier configuración antigua, si la hubiera).

/subsystem=remoting/http-connector=http-remoting-connector:remove
/subsystem=remoting/http-connector=http-remoting-connector:add(connector-ref="remoting",security-realm="ApplicationRealm")
/socket-binding-group=standard-sockets/socket-binding=remoting:add(port="4447")
/subsystem=undertow/server=default-server/http-listener=remoting:add(socket-binding=remoting)
:reload

imágenes/s/-2y7bau/8703/189cb2l/_/imagenes/iconos/emoticonos/advertencia.svg Espere a que se complete la recarga verificando el registro del servidor o el resultado de ":read-attribute(name=server-state)" antes de continuar.

Configurar el registro

Configurar el registro en JBoss, para poder cambiar dinámicamente el registro (DEBUG habilitado en este ejemplo).

/subsystem=logging/logger=org.ejbca:add
/subsystem=logging/logger=org.ejbca:write-attribute(name=level, value=DEBUG)
/subsystem=logging/logger=org.cesecore:add
/subsystem=logging/logger=org.cesecore:write-attribute(name=level, value=DEBUG)

Eliminar la configuración TLS y HTTP existente

Ejecute los siguientes comandos en JBoss CLI para eliminar la configuración TLS y HTTP existente (solo para estar seguro).

/subsystem=undertow/server= default -server/http-listener= default :remove
/subsystem=undertow/server= default -server/https-listener=https:remove
/socket-binding-group=standard-sockets/socket-binding=http:remove
/socket-binding-group=standard-sockets/socket-binding=https:remove
:reload

Espere a que se complete la recarga verificando el registro del servidor o el resultado de ":read-attribute(name=server-state)" antes de continuar.

Configurar TLS

Configure TLS según las siguientes instrucciones.

Asegúrese de que las contraseñas de esta sección sean correctas para que los comandos no fallen. En producción, las contraseñas deben cambiarse a contraseñas "reales".

Ejecute los siguientes comandos en JBoss CLI (jboss-cli.sh -c) para configurar TLS:

  1. Agregue interfaces, usando 0.0.0.0 para que esté disponible para todo el mundo:

    /interface =http:add(inet-address= "0.0.0.0" )
    /interface =httpspub:add(inet-address= "0.0.0.0" )
    /interface =httpspriv:add(inet-address= "0.0.0.0" )
    /socket-binding-group =standard-sockets /socket-binding =http:add(port= "8080" ,interface= "http" )
    /subsystem =undertow /server =default-server /http-listener =http:add(socket-binding=http)
    /subsystem =undertow /server =default-server /http-listener =http:write-attribute(name=redirect-socket, value= "httpspriv" )
    :reload
  2. Espere a que se complete la recarga verificando el registro del servidor o el resultado de ":read-attribute(name=server-state)" antes de continuar.

  3. Configurar identidades y enlaces de sockets:

    1. Actualice el alias del almacén de claves para que coincida con httpsserver.hostname en web.properties. Además, actualice la contraseña del almacén de claves de keystore.jks para que coincida con httpsserver.password y la contraseña del almacén de claves de truststore.jks para que coincida con java.truststore en web.properties.

      /core-service =management /security-realm =SSLRealm:add()
      /core-service =management /security-realm =SSLRealm /server-identity =ssl:add(keystore-path= "${jboss.server.config.dir}/keystore/keystore.jks" , keystore-password= "serverpwd" , alias = "localhost" )
      /core-service =management /security-realm =SSLRealm /authentication =truststore:add(keystore-path= "${jboss.server.config.dir}/keystore/truststore.jks" , keystore-password= "changeit" )
      /socket-binding-group =standard-sockets /socket-binding =httpspriv:add(port= "8443" ,interface= "httpspriv" )
      /socket-binding-group =standard-sockets /socket-binding =httpspub:add(port= "8442" , interface= "httpspub" )
    2. Reinicie el servidor de aplicaciones por completo. Espere a que finalice el inicio consultando el registro del servidor o el resultado de ":read-attribute(name=server-state)" antes de continuar.

      /subsystem =undertow /server =default-server /https-listener =httpspriv:add(socket-binding=httpspriv, security-realm= "SSLRealm" , verify-client=REQUIRED)
      /subsystem =undertow /server =default-server /https-listener =httpspriv:write-attribute(name=max-parameters, value= "2048" )
      /subsystem =undertow /server =default-server /https-listener =httpspub:add(socket-binding=httpspub, security-realm= "SSLRealm" )
      /subsystem =undertow /server =default-server /https-listener =httpspub:write-attribute(name=max-parameters, value= "2048" )
      :reload
  4. Finalice la configuración de Wildfly con los siguientes elementos importantes:

    /system-property =org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH:add(value= true )
    /system-property =org.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH:add(value= true )
    /system-property =org.apache.catalina.connector.URI_ENCODING:add(value= "UTF-8" )
    /system-property =org.apache.catalina.connector.USE_BODY_ENCODING_FOR_QUERY_STRING:add(value= true )
    /subsystem =webservices:write-attribute(name=wsdl-host, value=jbossws.undefined.host)
    /subsystem =webservices:write-attribute(name=modify-wsdl-address, value= true )
    :reload

Si está utilizando solicitudes GET de OCSP, es necesario configurar la codificación de URI y permitir la codificación para la consulta y la barra invertida mencionadas anteriormente.

En este punto, lo más probable es que sea necesario reiniciar WildFly usando ":shutdown(restart=true)".

Configuraciones opcionales

Habilitar el conector AJP

Solo es necesario si ejecuta un front-end Apache delante de WildFly.

/subsystem=undertow/server=default-server/ajp-listener=ajp-listener:add(socket-binding=ajp, scheme=https, enabled=true)

Agregar compatibilidad con PKCS#11 (HSM)

WildFly aísla la mayoría de las clases sun por defecto. A partir de EJBCA 6.6.3, EJBCA configura JBoss/WildFly para exponer estas clases (sun/security/pkcs11/wrapper) mediante jboss-deployment-structure.xml . Esto elimina la necesidad de configurar modules/system/layers/base/sun/jdk/main/module.xml .

Agregar soporte para enviar correo electrónico

Si necesita soporte para enviar correo electrónico (smtp), configure EjbcaMail con:

/socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=ejbca-mail-smtp:add(port="993", host="my.mail.server")
/subsystem=mail/mail-session="java:/EjbcaMail":add(jndi-name=java:/EjbcaMail, from=noreply@mymail)
/subsystem=mail/mail-session="java:/EjbcaMail"/server=smtp:add(outbound-socket-binding-ref=ejbca-mail-smtp, tls=true, username=smtpuser, password=smtppassword)

Dependiendo del servidor de correo puede haber una diferencia entre TLS y SSL, debes probar el otro si uno no funciona.

/subsystem=mail/mail-session= "java:/EjbcaMail" /server=smtp:add(outbound-socket-binding-ref=ejbca-mail-smtp, ssl= true , username=smtpuser, password=smtppassword)

Próximo paso: Implementación de EJBCA

Implementación de EJBCA