Edge para la nube privada en RHEL 8.X habilitado con FIPS

Este artículo contiene detalles y instrucciones para los clientes de Edge for Private Cloud que usan la versión 4.53.00 o una posterior, que se ejecuta en RHEL 8.X habilitado para FIPS.

Preinstalación

Asegúrate de que el estándar FIPS esté habilitado en tus nodos, además de los otros requisitos previos de configuración estándar que se indican en la documentación de Edge para la nube privada.

fips-mode-setup --check
FIPS mode is enabled.

Si el modo FIPS está inhabilitado, consulta la documentación oficial de Red Hat para obtener instrucciones sobre cómo habilitarlo:

Requisitos para Java

El Java que uses debe descargarse del repositorio de Red Hat para garantizar que los módulos de seguridad de Java sean compatibles con FIPS y puedan implementar restricciones específicas de FIPS a través de la seguridad de Java.

Instalación

En la referencia del archivo de configuración de la instalación silenciosa, establece FIPS_OS=true en cada nodo. Puedes seguir los pasos de instalación generales de Edge para una nube privada como de costumbre.

Formato de clave privada

Solo se puede usar el formato PKCS12/PFX para subir claves privadas a los almacenes de claves de Apigee para usarlas en tus proxies de API o hosts virtuales. Consulta Cómo convertir certificados a un formato compatible para obtener ayuda para crear el archivo.

Operaciones generales de TLS

Cuando uses Edge para la nube privada 4.53.00 o versiones posteriores en RHEL 8.X habilitado para FIPS, la mayoría de las configuraciones de componentes relacionadas con TLS de Edge deberán realizarse a través de almacenes de claves en formato PKCS12 o BCFKS. Consulta la documentación específica de FIPS o las notas de los artículos relevantes para la configuración de TLS para obtener más detalles. En el anexo, se enumeran algunos comandos útiles que se pueden usar para generar estos almacenes de claves.

Almacén de claves o almacén de confianza predeterminado de Java

Cuando Edge for Private Cloud 4.53.00 o versiones posteriores se ejecuta en RHEL 8.X habilitado para FIPS, el procesador de mensajes, el servidor de administración y otros componentes de edge-* dependen de un almacén de confianza y un almacén de claves predeterminados que se envían con el producto. Estos contienen certificados de AC en los que tu aplicación confiará de forma predeterminada. Si deseas cambiar esto a tu propia tienda que contiene certificados de AC, sigue el siguiente procedimiento:

  1. Crea un archivo cacerts en formato BCFKS que contenga todos los certificados de la AC en los que deseas confiar. Asegúrate de que la contraseña del almacén de claves y la contraseña de la clave sean iguales. Consulta el anexo para obtener más detalles.
  2. Coloca el archivo en una ruta de acceso adecuada y asegúrate de que el usuario de apigee pueda leerlo:
    cp my-cacerts.bcfks /opt/apigee/customer/application/my-cacerts.bcfks
    chown apigee:apigee /opt/apigee/customer/application/my-cacerts.bcfks
  3. Crea (o edita) el archivo de configuración adecuado según el componente con el que estés trabajando:
    Componente Archivo
    edge-management-server $/opt/apigee/customer/application/management-server.properties
    edge-message-processor $/opt/apigee/customer/application/message-processor.properties
    edge-router $/opt/apigee/customer/application/router.properties
    edge-postgres-server $/opt/apigee/customer/application/postgres-server.properties
    edge-qpid-server $/opt/apigee/customer/application/qpid-server.properties
  4. Agrega las siguientes líneas al archivo:
          conf_system_javax.net.ssl.trustStore=<PATH to bcfks cacerts>
          conf_system_javax.net.ssl.trustStorePassword=changeme
          conf_system_javax.net.ssl.keyStore=<PATH to bcfks cacerts>
          conf_system_javax.net.ssl.keyStoreType=BCFKS
          conf_system_javax.net.ssl.keyStorePassword=changeme
          
  5. Asegúrate de que el usuario de apigee sea el propietario del archivo de configuración y pueda leerlo:
    chown apigee:apigee $opt/apigee/customer/application/<file>.properties
  6. Reinicia el componente:
    /opt/apigee/apigee-service/bin/apigee-service  restart

Apéndice

Comandos de muestra de la operación del almacén de claves de BCFKS

El siguiente comando genera un almacén de claves de BCFKS con un par de claves y certificados autofirmados:

keytool -genkeypair -keyalg RSA -alias node0 -validity 365 -keystore keystore.node0 \
-storepass keypass -keypass keypass -v \
-dname "EMAILADDRESS=youremail@domain.com, CN=yourcn, OU=yourou, O=youro, L=yourl, C=yourc" \
-storetype BCFKS -providerpath /opt/apigee/edge-gateway/lib/thirdparty/bc-fips-1.0.2.4.jar \
-providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider -providername BCFIPS

Los comandos de keytool siguen siendo los mismos que se ejecutan generalmente, pero se deben agregar las siguientes opciones al comando keytool:

--storetype BCFKS -providerpath /opt/apigee/edge-gateway/lib/thirdparty/bc-fips-1.0.2.4.jar
-providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider 
-providername BCFIPS

Argumentos de Keytool

Argumento de keytool Descripción
-storetype El tipo de tienda es BCFKS.
-providerpath Ruta de acceso a bc-fips-XXXX.jar. La versión de este archivo JAR puede cambiar en versiones futuras de OPDK. Se debe usar la versión que envíe Apigee. También puedes descargar el archivo JAR desde los repositorios de Bouncycastle. A partir de la versión 4.53 de OPDK, debería ser /opt/apigee/edge-gateway/lib/thirdparty/bc-fips-1.0.2.4.jar.
-providerclass Debe establecerse en org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider.
-providername Debe establecerse en BCFIPS.

Se pueden usar comandos similares de keytool para importar o exportar certificados o claves desde o hacia un almacén de claves en formato BCFKS. Para obtener más información sobre cómo trabajar con BCFKS, consulta la documentación de BouncyCastle.

Almacén de PKCS12

Para generar un almacén PKCS12, se pueden usar los siguientes comandos de openssl:

# Generate a self-signed private key and certificate
openssl req -x509 -newkey rsa:2048 -keyout private.key -out certificate.pem -sha256 -days 36500 -nodes -subj "/C=yourc/ST=yourst/L=yourl/O=youro/OU=yourou/CN=cn/emailAddress=email"
# Package the above generated key and cert into a PKCS12
openssl pkcs12 -export -clcerts -in certificate.pem -inkey private.key -out keystore.pfx -name myalias

Si tienes tu propia clave privada y certificado, y deseas empaquetarlos en un PKCS12, consulta Cómo convertir certificados a un formato compatible.