Configure Apigee mTLS

Edge para la nube privada v4.19.01

Después de instalar el componente apigee-mtls en cada nodo del clúster, debes configurarlo e inicializarlo. Para ello, genera un par de claves o certificados y actualiza el archivo de configuración en tu máquina de administración. Luego, implementas los mismos archivos generados en todos los nodos del clúster y inicializas el componente apigee-mtls local.

Configura apigee-mtls (después de la instalación inicial)

En esta sección, se describe cómo configurar la mTLS de Apigee para un solo centro de datos inmediatamente después de la instalación inicial. Para obtener información sobre cómo realizar actualizaciones en una instalación existente de mTLS de Apigee, consulta Cómo cambiar una configuración existente de apigee-mtls. Para obtener información sobre cómo configurar varios centros de datos, consulta Configura varios centros de datos para mTLS de Apigee.

El siguiente es el proceso general para configurar apigee-mtls:

  1. Actualiza tu archivo de configuración: En la máquina de administración, actualiza el archivo de configuración para incluir la configuración de apigee-mtls.
  2. Instala Consul y genera credenciales: Instala Consul y úsalo para generar las credenciales de TLS (solo una vez).

    Además, edita el archivo de configuración de mTLS de Apigee para lo siguiente:

    1. Agrega la información de las credenciales
    2. Define la topología del clúster

    Ten en cuenta que puedes usar tus credenciales existentes o generarlas con Consul.

  3. Distribuye el archivo de configuración y las credenciales: Distribuye el mismo par de claves o certificado generado y el archivo de configuración actualizado a todos los nodos de tu clúster.
  4. Inicializa apigee-mtls: Inicializa el componente apigee-mtls en cada nodo.

Cada uno de estos pasos se describe en las siguientes secciones.

Paso 1: Actualiza tu archivo de configuración

En esta sección, se describe cómo modificar el archivo de configuración para incluir propiedades de configuración de mTLS. Para obtener información más general sobre el archivo de configuración, consulta Cómo crear un archivo de configuración.

Después de actualizar el archivo de configuración con las propiedades relacionadas con la mTLS, debes copiarlo en todos los nodos del clúster antes de inicializar el componente apigee-mtls en esos nodos.

Los comandos que hacen referencia al archivo de configuración usan "config_file" para indicar que su ubicación es variable, según dónde lo almacenes en cada nodo.

Para actualizar el archivo de configuración, sigue estos pasos:

  1. En la máquina de administración, abre el archivo de configuración.
  2. Copia el siguiente conjunto de propiedades de configuración de mTLS y pégalas en el archivo de configuración:
    ALL_IP="ALL_PRIVATE_IPS_IN_CLUSTER"
    ZK_MTLS_HOSTS="ZOOKEEPER_PRIVATE_IPS"
    CASS_MTLS_HOSTS="CASSANDRA_PRIVATE_IPS"
    PG_MTLS_HOSTS="POSTGRES_PRIVATE_IPS"
    RT_MTLS_HOSTS="ROUTER_PRIVATE_IPS"
    MS_MTLS_HOSTS="MGMT_SERVER_PRIVATE_IPS"
    MP_MTLS_HOSTS="MESSAGE_PROCESSOR_PRIVATE_IPS"
    QP_MTLS_HOSTS="QPID_PRIVATE_IPS"
    LDAP_MTLS_HOSTS="OPENLDAP_PRIVATE_IPS"
    MTLS_ENCAPSULATE_LDAP="y"
    
    ENABLE_SIDECAR_PROXY="y"
    ENCRYPT_DATA="BASE64_GOSSIP_MESSAGE"
    PATH_TO_CA_CERT="PATH/TO/consul-agent-ca.pem"
    PATH_TO_CA_KEY="PATH/TO/consul-agent-ca-key.pem"
    APIGEE_MTLS_NUM_DAYS_CERT_VALID_FOR="NUMBER_OF_DAYS"

    Establece el valor de cada propiedad para que se alinee con tu configuración.

    En la siguiente tabla, se describen estas propiedades de configuración:

    Propiedad Descripción
    ALL_IP Es una lista separada por espacios de las direcciones IP de host privadas de todos los nodos del clúster.

    El orden de las direcciones IP no importa, excepto que debe ser el mismo en todos los archivos de configuración del clúster.

    Si configuras la mTLS de Apigee para varios centros de datos, enumera todas las direcciones IP de todos los hosts en todas las regiones.

    LDAP_MTLS_HOSTS La dirección IP privada del host del nodo OpenLDAP en el clúster
    ZK_MTLS_HOSTS

    Es una lista separada por espacios de direcciones IP de host privadas en las que se alojan los nodos de ZooKeeper en el clúster.

    Ten en cuenta que, según los requisitos, debe haber al menos tres nodos de ZooKeeper.

    CASS_MTLS_HOSTS Es una lista separada por espacios de direcciones IP de host privadas en las que se alojan los servidores de Cassandra en el clúster.
    PG_MTLS_HOSTS Es una lista separada por espacios de direcciones IP de host privadas en las que se alojan los servidores de Postgres en el clúster.
    RT_MTLS_HOSTS Es una lista separada por espacios de direcciones IP de host privadas en las que se alojan los routers en el clúster.
    MTLS_ENCAPSULATE_LDAP Encripta el tráfico de LDAP entre el Message Processor y el servidor LDAP. Se establece en y.
    MS_MTLS_HOSTS Es una lista separada por espacios de direcciones IP de host privadas en las que se alojan los nodos del servidor de administración en el clúster.
    MP_MTLS_HOSTS Es una lista separada por espacios de las direcciones IP de host privadas en las que se alojan los procesadores de mensajes en el clúster.
    QP_MTLS_HOSTS Es una lista separada por espacios de direcciones IP de host privadas en las que se alojan los servidores de Qpid en el clúster.
    ENABLE_SIDECAR_PROXY Determina si Cassandra y Postgres deben estar al tanto de la malla de servicios.

    Debes establecer este valor en "y".

    ENCRYPT_DATA Es la clave de encriptación codificada en Base64 que usa Consul . Generaste esta clave con el comando consul keygen en el Paso 2: Instala Consul y genera credenciales.

    Este valor debe ser el mismo en todos los nodos del clúster.

    PATH_TO_CA_CERT Es la ubicación del archivo de certificado en el nodo. Generaste este archivo en el Paso 2: Instala Consul y genera credenciales.

    Esta ubicación debe ser la misma en todos los nodos del clúster para que los archivos de configuración sean los mismos.

    El certificado debe estar codificado en X509v3.

    PATH_TO_CA_KEY Es la ubicación del archivo de claves en el nodo. Generaste este archivo en el Paso 2: Instala Consul y genera credenciales.

    Esta ubicación debe ser la misma en todos los nodos del clúster para que los archivos de configuración sean los mismos.

    El archivo de clave debe estar codificado en X509v3.

    APIGEE_MTLS_NUM_DAYS_CERT_VALID_FOR

    Es la cantidad de días durante los que es válido un certificado cuando generas un certificado personalizado.

    El valor predeterminado es 365. El valor máximo es de 7,865 días (5 años).

    Además de las propiedades mencionadas anteriormente, la mTLS de Apigee usa varias propiedades adicionales cuando la instalas en una configuración de varios centros de datos. Para obtener más información, consulta Configura varios centros de datos.

  3. Asegúrate de que la propiedad ENABLE_SIDECAR_PROXY sea "y".
  4. Actualiza las direcciones IP en las propiedades relacionadas con el host. Asegúrate de usar las direcciones IP privadas cuando te refieras a cada nodo, no a las direcciones IP públicas.

    En pasos posteriores, establecerás los valores de las otras propiedades, como ENCRYPT_DATA, PATH_TO_CA_CERT y PATH_TO_CA_KEY. Aún no configuras sus valores.

    Cuando edites las propiedades de configuración de apigee-mtls, ten en cuenta lo siguiente:

    • Todas las propiedades son cadenas. Debes unir los valores de todas las propiedades entre comillas simples o dobles.
    • Si un valor relacionado con el host tiene más de una dirección IP privada, separa cada dirección IP con un espacio.
    • Usa direcciones IP privadas y no nombres de host ni direcciones IP públicas para todas las propiedades relacionadas con el host en el archivo de configuración.
    • El orden de las direcciones IP en un valor de propiedad debe ser el mismo en todos los archivos de configuración del clúster.
  5. Guarda los cambios en el archivo .

Paso 2: Instala Consul y genera credenciales

En esta sección, se describe cómo instalar Consul y generar credenciales.

Debes elegir uno de los siguientes métodos para generar credenciales:

  • Crea tu propia AC con Consul, como se describe en esta sección (recomendado)
  • Usa las credenciales de una AC existente con mTLS de Apigee (avanzado)

Acerca de las credenciales

Las credenciales consisten en lo siguiente:

  • Certificado: Es el certificado TLS alojado en cada nodo.
  • Clave: Es la clave pública de TLS alojada en cada nodo.
  • Mensaje de Gossip: Es una clave de encriptación codificada en base 64.

Generas una sola versión de cada uno de estos archivos una sola vez. Copias los archivos de clave y certificado a todos los nodos del clúster y agregas la clave de encriptación al archivo de configuración que también copias a todos los nodos.

Para obtener más información sobre la implementación de encriptación de Consul, consulta lo siguiente:

Instala Consul y genera credenciales

Usas un archivo binario de Consul local para generar credenciales que usa la mTLS de Apigee para autenticar comunicaciones seguras entre los nodos de tu clúster de nube privada. Como resultado, debes instalar Consul en tu máquina de administración antes de poder generar credenciales.

Para instalar Consul y generar credenciales de mTLS, sigue estos pasos:

  1. En tu máquina de administración, descarga el archivo binario de Consul 1.6.2 desde el sitio web de HashiCorp.
  2. Extrae el contenido del archivo de almacenamiento descargado. Por ejemplo, extrae el contenido a /opt/consul/.
  3. En tu máquina de administración, crea una nueva autoridad certificadora (AC) ejecutando el siguiente comando:
    /opt/consul/consul tls ca create

    Consul crea los siguientes archivos, que son un par de claves o certificados:

    • consul-agent-ca.pem (certificado)
    • consul-agent-ca-key.pem (clave)

    De forma predeterminada, los archivos de certificados y claves están codificados en X509v3.

    Más adelante, copiarás estos archivos en todos los nodos del clúster. Sin embargo, en este momento, solo debes decidir dónde en los nodos colocarás estos archivos. Deben estar en la misma ubicación en cada nodo. Por ejemplo, /opt/apigee/

  4. En el archivo de configuración, establece el valor de PATH_TO_CA_CERT en la ubicación a la que copiarás el archivo consul-agent-ca.pem en el nodo. Por ejemplo: 
    PATH_TO_CA_CERT="/opt/apigee/consul-agent-ca.pem"
  5. Establece el valor de PATH_TO_CA_KEY en la ubicación a la que copiarás el archivo consul-agent-ca-key.pem en el nodo. Por ejemplo: 
    PATH_TO_CA_KEY="/opt/apigee/consul-agent-ca-key.pem"
  6. Ejecuta el siguiente comando para crear una clave de encriptación para Consul:
    /opt/consul/consul keygen

    Consul genera una cadena aleatoria que se ve similar a la siguiente:

    QbhgD+EXAMPLE+Y9u0742X/IqX3X429/x1cIQ+JsQvY=
  7. Copia la cadena y configúrala como el valor de la propiedad ENCRYPT_DATA en tu archivo de configuración. Por ejemplo:
    ENCRYPT_DATA="QbhgD+EXAMPLE+Y9u0742X/IqX3X429/x1cIQ+JsQvY="
  8. Guarda el archivo de configuración.

En el siguiente ejemplo, se muestra la configuración relacionada con la mTLS en un archivo de configuración (con valores de ejemplo):

...
IP1=10.126.0.121
IP2=10.126.0.124
IP3=10.126.0.125
IP4=10.126.0.127
IP5=10.126.0.130
ALL_IP="$IP1 $IP2 $IP3 $IP4 $IP5"
LDAP_MTLS_HOSTS="$IP3"
ZK_MTLS_HOSTS="$IP3 $IP4 $IP5"
CASS_MTLS_HOSTS="$IP3 $IP4 $IP5"
PG_MTLS_HOSTS="$IP2 $IP1"
RT_MTLS_HOSTS="$IP4 $IP5"
MS_MTLS_HOSTS="$IP3"
MP_MTLS_HOSTS="$IP4 $IP5"
QP_MTLS_HOSTS="$IP2 $IP1"
ENABLE_SIDECAR_PROXY="y"
ENCRYPT_DATA="QbhgD+EXAMPLE+Y9u0742X/IqX3X429/x1cIQ+JsQvY="
PATH_TO_CA_CERT="/opt/apigee/consul-agent-ca.pem"
PATH_TO_CA_KEY="/opt/apigee/consul-agent-ca-key.pem"
...

Paso 3: Distribuye el archivo de configuración y las credenciales

Copia los siguientes archivos en los nodos que ejecutan ZooKeeper con una herramienta como scp:

  • Archivo de configuración: Copia la versión actualizada de este archivo y reemplaza la versión existente en todos los nodos (no solo en los que ejecutan ZooKeeper).
  • consul-agent-ca.pem: Cópialo en la ubicación que especificaste como el valor de PATH_TO_CA_CERT en el archivo de configuración.
  • consul-agent-ca-key.pem: Cópialo en la ubicación que especificaste como el valor de PATH_TO_CA_KEY en el archivo de configuración.

Asegúrate de que las ubicaciones a las que copies los archivos de certificado y clave coincidan con los valores que estableciste en el archivo de configuración en el Paso 2: Instala Consul y genera credenciales.

Paso 4: Inicializa apigee-mtls

Después de actualizar el archivo de configuración, copiarlo y las credenciales a todos los nodos del clúster, e instalar apigee-mtls en cada nodo, ya puedes inicializar el componente apigee-mtls en cada nodo.

Para inicializar apigee-mtls, haz lo siguiente:

  1. Accede a un nodo del clúster como el usuario raíz. Puedes realizar estos pasos en los nodos en cualquier orden que desees.
  2. Haz que el usuario apigee:apigee sea propietario del archivo de configuración actualizado, como se muestra en el siguiente ejemplo:
    chown apigee:apigee config_file
  3. Para configurar el componente apigee-mtls, ejecuta el siguiente comando:
    /opt/apigee/apigee-service/bin/apigee-service apigee-mtls setup -f config_file
  4. (Opcional) Ejecuta el siguiente comando para verificar que la configuración se realizó correctamente:
    /opt/apigee/apigee-mtls/lib/actions/iptables.sh validate
  5. Ejecuta el siguiente comando para iniciar la mTLS de Apigee:
    /opt/apigee/apigee-service/bin/apigee-service apigee-mtls start

    Después de instalar la mTLS de Apigee, debes iniciar este componente antes que cualquier otro componente del nodo.

  6. (Solo para nodos de Cassandra) Cassandra requiere argumentos adicionales para funcionar dentro de la malla de seguridad. Como resultado, debes ejecutar los siguientes comandos en cada nodo de Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra setup -f config_file
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
  7. (Solo para nodos de Postgres) Postgres requiere argumentos adicionales para funcionar dentro de la malla de seguridad. Como resultado, debes hacer lo siguiente en los nodos de Postgres:

    (Solo para la cuenta principal)

    1. Ejecuta los siguientes comandos en el nodo principal de Postgres:
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup -f config_file
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql configure
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql restart

    (Solo en modo de espera)

    1. Crea una copia de seguridad de tus datos de Postgres existentes. Para instalar la mTLS de Apigee, debes volver a inicializar los nodos principales o de reserva, por lo que se perderán los datos. Para obtener más información, consulta Configura la replicación principal/en espera para Postgres.
    2. Borra todos los datos de Postgres:
      rm -rf /opt/apigee/data/apigee-postgresql/pgdata
    3. Configura Postgres y, luego, reinícialo, como se muestra en el siguiente ejemplo:
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup -f config_file
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql configure
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql restart

    Si realizas la instalación en una topología de varios centros de datos, usa una ruta de acceso absoluta para el archivo de configuración.

  8. Inicia los componentes restantes de Apigee en el nodo en el orden de inicio, como se muestra en el siguiente ejemplo:
    /opt/apigee/apigee-service/bin/apigee-service component_name start
  9. Repite este proceso para cada nodo del clúster.
  10. (Opcional) Verifica que la inicialización de apigee-mtls se haya realizado correctamente con uno o más de los siguientes métodos:
    1. Valida la configuración de iptables
    2. Verifica el estado del proxy remoto
    3. Verifica el estado del quórum

    Cada uno de estos métodos se describe en Verifica la configuración.

Cambia una configuración de apigee-mtls existente

Para personalizar una configuración de apigee-mtls existente, debes desinstalar y reinstalar apigee-mtls.

Para reiterar este punto, cuando cambies una configuración de mTLS existente de Apigee, haz lo siguiente:

  • Si cambias un archivo de configuración, primero debes desinstalar apigee-mtls y volver a ejecutar setup o configure:
    # DO THIS:
    /opt/apigee/apigee-service/bin/apigee-service apigee-mtls uninstall
    
    # BEFORE YOU DO THIS:
    /opt/apigee/apigee-service/bin/apigee-service apigee-mtls setup -f file
    OR
    /opt/apigee/apigee-service/bin/apigee-service apigee-mtls configure
  • Debes desinstalar y volver a ejecutar setup o configure en todos los nodos del clúster, no solo en uno.