Habilitación de la segunda capa de autenticación para conexiones EP11-Sólo plan estándar

Para garantizar el control exclusivo sobre la ejecución de las operaciones criptográficas, puede utilizar la CLI del gestor de certificados de Hyper Protect Crypto Services para habilitar la segunda capa de autenticación para las conexiones EP11 (API de GREP11 o PKCS #). Al habilitar esta función, se añade una capa adicional de control de acceso en la parte superior de la señal IAM (Identity and Access Management) a las aplicaciones EP11. Se establece una conexión TLS mutua para garantizar que solo las aplicaciones EP11 con un certificado de cliente válido puedan realizar operaciones EP11.

La segunda capa de autenticación para conexiones EP11 solo está soportada actualmente por el plan estándar Hyper Protect Crypto Services.

Mejores prácticas de seguridad y disponibilidad para habilitar la autenticación TLS mutua

Con TLS mutuo como una segunda capa de autenticación para acceder a EP11, debe tener en cuenta las consideraciones de seguridad y disponibilidad siguientes:

  • Si debe impedir que determinadas personas accedan a EP11, separe los administradores de certificados de los usuarios del servicio. Controle el acceso asignando el rol Certificate Manager sólo a las personas que gestionan los certificados de cliente y asignando a otros usuarios de servicio los roles correspondientes para su uso operativo. Para gestionar el acceso de usuario, debe tener asignado el rol Administrador con acceso de gestión de cuentas.
  • No se puede acceder a las API EP11 si utiliza certificados de cliente que no son válidos o si utiliza claves privadas que no están disponibles para la firma de certificados de cliente. Para garantizar la disponibilidad, asigne a más de una persona el rol de Gestor de certificados como copia de seguridad. Los administradores de certificados tienen que mantener sus claves privadas de administrador exclusivas de forma segura. Los administradores de certificados también deben mantener una copia de seguridad de todos los certificados de cliente fuera de la instancia de Hyper Protect Crypto Services, por ejemplo, utilizando IBM Cloud Secrets Manager. También se recomienda supervisar la caducidad de los certificados.

Antes de empezar

Para poder habilitar la segunda capa de autenticación para las conexiones de la API de GREP11 o PKCS #11, asegúrese de que cumple con los requisitos previos siguientes:

  1. Se le asigna el rol IAM de Gestor de certiticados para realizar las acciones correspondientes. Para obtener más información sobre la asignación de roles de IAM, consulte Gestión del acceso de usuario y Gestión del acceso a recursos.

  2. Tiene un certificado de cliente preparado en la estación de trabajo que se utiliza para la autenticación TLS. Se recomienda utilizar IBM Cloud Secrets Manager para gestionar certificados SSL/TLS para sus aplicaciones y servicios. Es gratuito y proporciona almacenamiento persistente para sus certificados.

  3. Instale la CLI de IBM Cloud.

  4. Instale el último plug-in de la CLI del gestor de certificados con el mandato siguiente:

    ibmcloud plugin install hpcs-cert-mgr
    
  5. Inicie sesión en IBM Cloud con la CLI. Si tiene varias cuentas, seleccione la cuenta con la que se crea la instancia de servicio. Asegúrese de que inicia sesión en la región y el grupo de recursos correctos donde se encuentra la instancia de servicio con el mandato siguiente:

    ibmcloud target -r <region> -g <resource_group>
    

Paso 1: Configurar la clave de firma del administrador

Para habilitar la segunda capa de autenticación, en primer lugar debe configurar la clave de firma del administrador. La clave de firma se utiliza para conectarse al servidor del gestor de certificados de la instancia que procesa los mandatos de la CLI del gestor de certificados.

  1. Genere el par de claves de firma con el mandato siguiente:

    ibmcloud hpcs-cert-mgr adminkey set --crn HPCS_CRN [--private]
    

    Sustituya la variable HPCS_CRN por el nombre de recurso de nube (CRN) de su instancia de Hyper Protect Crypto Services. Puede utilizar el mandato ibmcloud resource service-instances --long para recuperar el CRN. El parámetro --private es opcional. Si utiliza esta opción, el URL del servidor del gestor de certificados apunta al punto final privado y debe utilizar la red privada para conectar su instancia de servicio.

    Después de la ejecución de este mandato, se genera un par de claves públicas y privadas y se almacenan en la estación de trabajo local. La vía de acceso del archivo predeterminada es /Users/<username>/.hpcs-cert-mgr-cfg/. Asegúrese de que almacena la clave de firma de forma segura, por ejemplo con protección de contraseña. La clave pública se carga automáticamente en el servidor del gestor de certificados de la instancia para la verificación de firmas.

    Si desea renovar y actualizar la clave de firma, puede utilizar el mandato ibmcloud hpcs-cert-mgr adminkey update para realizar la acción. Para obtener más información sobre el uso de la CLI, consulte Hyper Protect Crypto Services Referencia de la CLI del gestor de certificados.

  2. (Opcional) Compruebe y confirme si se ha cargado la clave pública en el servidor con el mandato siguiente:

    ibmcloud hpcs-cert-mgr adminkey get --crn HPCS_CRN [--private]
    

    Si este mandato devuelve el valor de la clave pública, significa que ha cargado la clave pública correctamente.

Paso 2: Configurar el certificado de CA de cliente para la autenticación

Después de configurar la clave de firma de administrador, debe cargar el certificado de entidad emisora de certificados(CA)A trusted third-party organization or company that issues the digital certificates. The certificate authority typically verifies the identity of the individuals who are granted the unique certificate. de cliente en el servidor del gestor de certificados de instancia para la autenticación de cliente TLS.

Después de configurar el certificado de CA de cliente, ya no podrá acceder a los almacenes de claves EP11 y a las claves EP11 a través de la interfaz de usuario.

  1. (Opcional) Preparar certificados de CA y de cliente

    Puede generar certificados de CA para la infraestructura de GREP11 utilizando el programa de utilidad OpenSSL.

    Asegúrese de instalar OpenSSL en una estación de trabajo que puede utilizar para generar los certificados. Complete los pasos siguientes en la estación de trabajo:

    1. Genere la clave de CA ejecutando el mandato siguiente:
      openssl genrsa -out ca.key 2048
      
    2. Cree el certificado de CA ejecutando el mandato siguiente:
      openssl req -new -x509 -key ca.key -days 730 -out ca.pem
      
    3. Cree la clave de cliente ejecutando el mandato siguiente:
      openssl genrsa -out client-key.pem 2048
      
    4. Cree la solicitud de firma de certificado de cliente ejecutando el mandato siguiente:
      openssl req -new -key client-key.pem -out client.csr
      
    5. Cree el certificado de cliente ejecutando el mandato siguiente:
      openssl x509 -req -days 730 -in client.csr -CA ca.pem -CAcreateserial -CAkey ca.key -out client.pem
      
  2. Cargue el certificado de CA de cliente en el servidor con el mandato siguiente:

    Si el certificado de cliente está firmado por un certificado de CA intermedio en una cadena de certificados, debe cargar dicho certificado de CA intermedio.

    ibmcloud hpcs-cert-mgr cert set --crn HPCS_CRN --admin-priv-key ADMIN_PRIV_KEY --cert-id CERT_ID --cert CERT_FILE [--private]
    

    Sustituya las variables de la solicitud de ejemplo de acuerdo con la siguiente tabla.

    Tabla 1. Describe las variables necesarias para cargar el certificado TLS
    Variable Descripción
    HPCS_CRN Obligatorio. El nombre de recurso de nube (CRN) de su instancia de Hyper Protect Crypto Services. Puede utilizar el mandato ibmcloud resource service-instances --long para recuperar el CRN.
    ADMIN_PRIV_KEY Obligatorio. La vía de acceso de archivo de la clave privada actual en la estación de trabajo local que genera o actualiza en el Paso 1. La clave privada se utiliza para firmar esta acción de mandato para el servidor del gestor de certificados de la instancia.
    CERT_ID Obligatorio. El ID de serie que desea asignar al certificado de CA del cliente para su fácil identificación.
    CERT_FILE Obligatorio. La vía de acceso del archivo del certificado de CA del cliente en la estación de trabajo local.

    El parámetro --private es opcional. Si utiliza esta opción, el URL del servidor del gestor de certificados apunta al punto final privado y debe utilizar la red privada para conectar su instancia de servicio.

  3. (Opcional) Compruebe y confirme si el certificado de CA de cliente se carga en el servidor con el mandato siguiente:

    ibmcloud hpcs-cert-mgr cert list --crn HPCS_CRN [--private]
    

    Este mandato lista todos los certificados de CA de cliente disponibles que gestiona en el servidor. Si la lista contiene el certificado que se ha cargado anteriormente, significa que la acción se ha completado correctamente.

Paso 3: Establecer conexiones TLS mutuas para aplicaciones EP11

Después de configurar la clave de firma del administrador y el certificado de CA del cliente, los usuarios de EP11 pueden establecer conexiones TLS mutuas para las aplicaciones que utilizan la API GREP11 o PKCS #11. Para que los usuarios de EP11 puedan llevarlo a cabo, deben configurar las aplicaciones GREP11 o PKCS #11 con el certificado de cliente.

Para utilizar la API de GREP11 o PKCS #11, asegúrese de que los usuarios de EP11 tengan asignados los roles de IAM adecuados para realizar operaciones EP11. Para obtener más información, consulte el separador API de HSM en Roles de acceso del servicio IAM.

  • Configurar aplicaciones GREP11

    En función del lenguaje de programación que utilice para la aplicación GREP11, el método de configuración varía en función del paquete gRPC correspondiente. A continuación se proporcionan ejemplos para Golang y JavaScript.

    • Fragmento de código de ejemplo de Golang

      cert, _ := tls.LoadX509KeyPair("client.pem", "client-key.pem")
      var callOpts = []grpc.DialOption{
        grpc.WithTransportCredentials(credentials.NewTLS(&tls.Config{Certificates: []tls.Certificate{cert}}))
      }
      

      El tls.Config{} se debe definir correctamente basándose en el Estructura de tipo Config. Debe establecer como mínimo el campo Certificates. Asegúrese de utilizar la clave de cliente y el certificado de cliente. Para obtener el código de ejemplo completo de Golang, consulte El repositorio GitHub de ejemplo para Golang.

    • Fragmento de código de ejemplo de JavaScript

      credentials.push(grpc.credentials.createSsl());
      

      Puede consultar la documentación del módulo Credenciales para obtener información detallada sobre las funciones y los parámetros. Debe establecer los parámetros private_key y cert_chain para la función createSsl(). Para ver el código de ejemplo completo de JavaScript, consulte El repositorio GitHub de ejemplo para JavaScript.

  • Configurar aplicaciones PKCS #11

    PKCS #11 maneja el TLS mutuo en su archivo de configuración. Actualice el campo tls según el ejemplo siguiente:

    tls:
      enabled: true
      mutual: true
      cacert:
      certfile: "<client_certificate>"
      keyfile: "<client_certificate_private_key>"
    

    Sustituya las variables del ejemplo basándose en la tabla siguiente:

    Tabla 3. Describe las variables necesarias para configurar aplicaciones PKCS #11
    Variable Descripción
    client_certificate Obligatorio. La vía de acceso del archivo del certificado de cliente que el administrador de certificados ha cargado en el servidor.
    client_certificate_private_key Obligatorio. La vía de acceso del archivo de la clave privada del certificado de cliente que se utiliza para firmar el certificado.

Después de la configuración, cuando las aplicaciones utilizan la API de GREP11 o PKCS #11 para realizar operaciones criptográficas, se establece una conexión TLS mutua y se valida el certificado de cliente para la capa de autenticación adicional.

(Opcional) Inhabilitación de conexiones TLS mutuas

Si ya no necesita la segunda capa de autenticación, puede inhabilitar la función suprimiendo todos los certificados de CA del cliente en el servidor.

  1. Suprima un certificado de CA con el mandato siguiente. Repita este paso para suprimir todos los certificados disponibles en el servidor para inhabilitar las conexiones TLS de las aplicaciones EP11.

    ibmcloud hpcs-cert-mgr cert delete --crn HPCS_CRN --admin-priv-key ADMIN_PRIV_KEY --cert-id CERT_ID [--private]
    

    Sustituya las variables de la solicitud de ejemplo de acuerdo con la siguiente tabla.

    Tabla 2. Describe las variables necesarias para suprimir certificados de CA
    Variable Descripción
    HPCS_CRN Obligatorio. El nombre de recurso de nube (CRN) de su instancia de Hyper Protect Crypto Services. Puede utilizar el mandato ibmcloud resource service-instances --long para recuperar el CRN.
    ADMIN_PRIV_KEY Obligatorio. La vía de acceso del archivo de su clave privada actual que se almacena en la estación de trabajo local. La clave privada se utiliza para firmar esta acción de mandato para el servidor del gestor de certificados de la instancia.
    CERT_ID Obligatorio. El ID de serie del certificado de CA que desea suprimir. Primero puede utilizar el mandato ibmcloud hpcs-cert-mgr cert list --crn HPCS_CRN para listar todos los certificados, incluidos sus ID.

    El parámetro --private es opcional. Si utiliza esta opción, el URL del servidor del gestor de certificados apunta al punto final privado y debe utilizar la red privada para conectar su instancia de servicio.

    Si se han configurado varios administradores de certificados para la instancia de servicio, asegúrese de suprimir todos los certificados de CA bajo estos administradores.

    Si suprime un certificado de CA del servidor del gestor de certificados, todas las aplicaciones que utilizan los certificados de cliente que emite este certificado de CA no tienen acceso a la instancia de GREP11 a través de la conexión TLS mutua.

    Después de suprimir todos los certificados de CA del servidor del gestor de certificados, la autenticación TLS mutua para la instancia de GREP11 está inhabilitada. A continuación, las aplicaciones no necesitan la conexión TLS mutua para conectarse a la instancia de GREP11.

  2. (Opcional) Compruebe y confirme si todos los certificados de CA se suprimen con el mandato siguiente:

    ibmcloud hpcs-cert-mgr cert list --crn HPCS_CRN [--private]
    

    Si no se devuelve ningún certificado, significa que se suprimen todos los certificados de la instancia de servicio.

  3. (Opcional) Actualice las aplicaciones GREP11 o PKCS #11 para suprimir las configuraciones de certificados, de modo que las aplicaciones ya no utilicen el certificado para futuras conexiones de API.

Qué hacer a continuación