Escenario: Crear una instancia gemela digital que utilice un certificado mTLS

Si recibe datos de un dispositivo, debe utilizar la autenticación con la instancia de gemelo digital. En este escenario se explica cómo utilizar un certificado para autenticar una instancia de gemelo digital para un dispositivo.

TLS mutua (mTLS) es un protocolo de seguridad que garantiza que tanto el cliente como el servidor se autentiquen mutuamente durante la comunicación. A diferencia de TLS estándar, que autentica sólo el servidor, mTLS agrega una capa de confianza al requerir que tanto el cliente como el servidor presenten certificados válidos. También puede utilizar un secreto para autenticar la instancia de gemelo digital si está configurando un entorno de prueba.
  1. Crear una Clave
  2. Crear una autoridad de certificación
  3. Generar una nueva clave privada
  4. Crear un certificado que se gestione externamente
  5. Crear una instancia de gemelo digital que utilice un certificado
  6. Obtenga los detalles de la instancia de un gemelo digital
  7. Suscribirse a un tema mediante MQTTx
  8. Ver datos de dispositivos en APEX

Instrucciones Óptimas
  • Girar certificados con frecuencia.
  • Limitar los períodos de validez del certificado.
  • Almacene las claves privadas mediante Vaults.
  • Supervisar y auditar los intentos de conexión.

Antes de empezar

Asegúrese de que tiene los permisos necesarios. Un administrador otorga acceso mediante la creación de las políticas necesarias. Para obtener más información, consulte Requisitos para conocer las políticas necesarias para los certificados y Detalles de política para la plataforma Internet of Things (IoT) para conocer las políticas necesarias para los recursos IoT.

Políticas de certificado

Al crear una instancia de gemelo digital si utiliza un certificado para la autenticación, necesita la siguiente política para que el dominio IoT pueda leer el certificado.

Deje que cualquier usuario IoT lea certificados en un compartimento específico para un dominio IoT:
Allow any-user to {CERTIFICATE_BUNDLE_READ, CERTIFICATE_READ} in compartment <compartment-name> where request.principal.type = 'iotdomain'
Allow any-user to {CERTIFICATE_AUTHORITY_BUNDLE_READ, CERTIFICATE_AUTHORITY_READ} in compartment <compartment-name> where request.principal.type = 'iotdomain'
Allow any-user to {CABUNDLE_READ} in compartment <compartment-name> where request.principal.type = 'iotdomain'

Paso 1: Crear una Clave

Debe tener una clave de cifrado simétrica protegida por hardware existente en Oracle Cloud Infrastructure (OCI). Para comprobar si tiene una clave de cifrado maestra o para crear una nueva:

  1. Vaya a Identity & Security y, a continuación, seleccione Vault.
  2. Seleccione el compartimento que desea utilizar para los recursos IoT.
  3. Para crear una clave, seleccione Crear clave y siga las instrucciones de Creación de una clave de cifrado maestra.
  4. O bien, en la lista de Valores por defecto, seleccione el menú Acciones junto al almacén que desea utilizar y, a continuación, seleccione Ver detalles de almacén.
  5. Seleccione Claves de cifrado maestras para ver las claves. Seleccione View Key Details (Ver detalles de clave) para buscar el Protection Mode (Modo de protección) y confirmar que es HSM (Módulo de seguridad de hardware).

Paso 2: Crear una autoridad de certificación

Utilice el servicio Certificates para crear una autoridad de certificación (CA) raíz o una CA subordinada. Para obtener más información, consulte Crear una autoridad de certificación.

En esta tarea de ejemplo se explica cómo emitir un certificado con una clave privada que se gestiona externamente mediante una autoridad de certificación subordinada.

Ya debe tener una CA raíz para crear una CA subordinada.

  1. Conéctese como Administrador, con las políticas correctas para realizar estas acciones. Debe tener el nivel adecuado de acceso de seguridad para crear una CA.
  2. En la página de lista Certificate Authorities (Autoridades de certificación), seleccione Create Certificate Authority (Crear autoridad de certificación). Si necesita ayuda para encontrar la página de lista, consulte List Certificate Authorities.
  3. Seleccione Compartimento y, a continuación, seleccione el compartimento en la que desea crear la CA.
  4. En Tipo de autoridad de certificación, seleccione el tipo Autoridad de certificación subordinada: cualquier CA que no sea la CA raíz en una jerarquía que contenga otras CA.
  5. (Opcional) Introduzca un nombre de visualización único para la CA. Este nombre ayuda a identificar la autoridad de certificación con fines administrativos pero no aparece como parte del certificado de la CA. Evite introducir información confidencial.
    Nota

    No hay dos CA en un arrendamiento que puedan compartir el mismo nombre, incluidas las CA pendientes de supresión.
  6. (Opcional) Para aplicar etiquetas, seleccione Mostrar opciones de etiquetado. Para obtener más información sobre las etiquetas, consulte Etiquetas de recursos.
  7. Seleccione Next (Siguiente).
  8. Introduzca la información del asunto. La información del sujeto incluye al menos un nombre común (CN) para identificar al titular del certificado del CA. Según el uso previsto del certificado, el sujeto puede identificar una persona, una organización, un punto final de computadora o un dispositivo. El formato de la información de sujeto debe cumplir con los estándares RFC 5280. Puede utilizar comodines para emitir un certificado para varios nombres de dominio o subdominio.
  9. Seleccione Next (Siguiente).
  10. En Configuración de autoridad, confirme o seleccione el almacén que contiene la clave de cifrado que desea utilizar para el certificado. Si lo desea, seleccione Cambiar compartimiento para especificar un compartimento diferente. Para obtener información sobre la creación y gestión de almacenes, consulte Gestión de almacenes.
  11. En Key (Clave), seleccione la clave en el almacén que desea utilizar. La lista incluye solo las claves asimétricas en el almacén porque Certificates solo soporta claves asimétricas. Puede seleccionar entre las claves Rivest-Shamir-Adleman (RSA) que tienen 2.048 bits o 4.096 bits. También puede seleccionar entre las claves eliptic curvas criptografía algoritmo firma digital (ECDSA) que tienen un ID de curva elíptico de NIST_P384. Específicamente, la lista incluye solo estos tipos de claves asimétricas que están protegidas por un módulo de seguridad de hardware (HSM). Los certificados no soportan el uso de claves protegidas por software. Para obtener más información sobre la creación y gestión de claves, consulte Gestión de claves.
  12. En Algoritmo de firma, en función de la familia de algoritmos clave, seleccione una de las siguientes opciones:
    • SHA256_WITH_RSA: clave RSA con una función hash SHA-256
    • SHA384_WITH_RSA: clave RSA con una función hash SHA-384
    • SHA512_WITH_RSA: clave RSA con una función hash SHA-512
    • SHA256_WITH_ECDSA: clave ECDSA con una función hash SHA-256
    • SHA384_WITH_ECDSA: clave ECDSA con una función hash SHA-384
    • SHA512_WITH_ECDSA: clave ECDSA con una función hash SHA-512
  13. Seleccione Next (Siguiente).
  14. Configuración de la regla de caducidad En Duración Máxima de validez de los certificados (días), especifique el número máximo de días que puede ser válido un certificado emitido por esta CA. Recomendamos encarecidamente un período de validez no superior a 90 días.
  15. En la página Configuración de Revocación, si no desea configurar una lista Omitir Revocación, seleccione la casilla de control.
  16. Seleccione Next (Siguiente).
  17. Confirme que la información es correcta y, a continuación, seleccione Crear autoridad de certificación. La creación de recursos relacionados con certificados puede tardar unos minutos.
  18. Si la autoridad de certificado se ha creado correctamente, se muestran los detalles de resumen.

Paso 3: Generar una nueva clave privada

Cree una clave privada y una solicitud de firma de certificado (CSR) mediante OpenSSL.

Nota

Por motivos de seguridad, considere la posibilidad de realizar este paso en el dispositivo para mantener la clave privada y nunca compartirla externamente.
  1. Utilice este comando para generar una nueva clave privada private.pem y una solicitud de firma de certificado csr.pem con cifrado RSA de 2048 bits. En este ejemplo se muestra el uso del parámetro -nodes que especifica sin protección por contraseña y utiliza las extensiones v3_req.
    openssl req -nodes -newkey rsa:2048 -keyout private.pem -out csr.pem -extensions v3_req
    Nota

    Si utiliza Linux, por defecto, el archivo OpenSSL.cnf comenta la extensión, por ejemplo, si ve algo como esto en el archivo de configuración OpenSSL: /etc/pki/tls/openssl.cnf
     # req_extensions = v3_req # The extensions to add to a certificate request
    A continuación, elimine # para quitar los comentarios de las extensiones, de modo que el archivo tenga un aspecto similar al siguiente:
    req_extensions = v3_req  # The extensions to add to a certificate request
    Para verificar que OpenSSL está utilizando extensions v3_req, puede verificar que la salida contiene:
    X509v3 extensions:
        X509v3 Basic Constraints: critical
            CA:FALSE
  2. En este ejemplo se muestran los campos de entrada de la solicitud de certificado y los valores de ejemplo. Introduzca la información que se incorporará en el informe de certificado, como nombre distintivo (DN).

    Introduzca el nombre común. Puede encontrar el nombre común en el separador Subject Information de la página Certificate details, consulte el paso 8 Create a Certificate Authority o para obtener ayuda para buscar la página de detalles del certificado, consulte Listing Certificates:
    Country Name (2 letter code) []: US
    State or Province Name (full name) [Some-State]:
    Locality Name (eg, city) []:
    Organization Name (eg, company) []:
    Organizational Unit Name (eg, section) []:
    Common Name (Enter common name from the certificate details.) []:common-name
    Email Address [your@email.com]:
    
    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:
    An optional company name []:

Paso 4: Crear un certificado gestionado externamente

Puede generar una solicitud del certificado de firma (CSR) y la clave privada en el servidor donde tiene previsto instalar el certificado y, a continuación, enviar esa CSR a una autoridad de certificado para emitir un certificado, todo mientras gestiona la clave privada externamente.

En esta tarea se describe cómo emitir un certificado con una clave privada que gestione externamente. Para obtener más información sobre otras formas de utilizar un certificado, consulte Creación de un certificado para gestionar externamente y Gestión de certificados.
  1. En la consola, abra el menú de navegación y seleccione Identidad y seguridad.
  2. En la página de lista Certificados, se muestra la lista de Autoridad de certificado para un compartimento específico.
  3. Busque el certificado con el que desea trabajar y seleccione el menú Acciones al final de la fila.
  4. Seleccione Certificado de incidencia.
  5. En Tipo de cheque regalo, para emitir un certificado desde una CA de servicio Certificates gestionada por una CA externa de terceros, seleccione Emitido por una CA interna, gestionada de forma interna.
  6. Introduzca un nombre de visualización único para el certificado. Evite introducir información confidencial.
    Nota

    No hay dos certificados en el arrendamiento que puedan compartir el mismo nombre, incluidos los certificados pendientes de supresión.
  7. (Opcional) Introduzca una descripción que le ayude a identificar el certificado. Evite introducir información confidencial.
  8. Para los certificados que gestiona una CA de terceros, no necesita proporcionar información sobre el tema. En su lugar, seleccione Siguiente.
  9. En Solicitud de firma de certificado, proporcione el contenido del certificado seleccionando Cargar archivo y, a continuación, seleccione Seleccionar uno para cargar el certificado como un archivo en formato PEM.
  10. O bien, seleccione Pegar contenido y, a continuación, seleccione el cuadro de texto para pegar el contenido del certificado directamente.
  11. Seleccione Next (Siguiente).
  12. No puede configurar la renovación automática para certificados que el servicio Certificates no gestiona. Seleccione Siguiente para continuar.
  13. Verifique que la información de resumen es correcta y, a continuación, seleccione Crear certificado.
  14. Se abre la página Detalles de certificado. En Versiones, busque el nombre del certificado que desea ver, vaya al menú Acciones al final de la fila y seleccione Ver contenido. Para obtener más información, consulte Visualización de detalles de certificados.
  15. Seleccione Descargar y Guardar el archivo Certificate PEM.
  16. En la página de detalles del certificado, vaya al separador Información del asunto y copie el nombre común del certificado que se va a utilizar en el siguiente paso.

Paso 5: Crear una instancia gemela digital que utilice un certificado

Para autenticar un dispositivo para enviar datos, puede crear una instancia de gemelo digital mediante el parámetro --auth-id y el <certificate-OCID> creado en el paso anterior.

Utilice este comando y parámetros para crear una instancia de gemelo digital. Sustituya <common-name-for-the-certificate>. Sustituya <certificate-OCID> por el OCID del certificado para su entorno. Busque estos valores en los detalles del certificado. Para obtener más información, consulte Visualización de detalles de certificados:

oci iot digital-twin-instance create --iot-domain-id <iot-domain-OCID> --auth-id <certificate-OCID> --external-key <common-name-from-certificate-details>

Para obtener una lista completa de los parámetros de la CLI, consulte oci iot digital-twin-instance create y consulte Creación de una instancia de gemelo digital para obtener más información.

Paso opcional 6: Obtener detalles de instancia de gemelo digital

Utilice este comando para ver los detalles de una instancia de gemelo digital. La respuesta contiene el OCID de instancia del gemelo digital, el ID de autenticación y la clave externa.
oci iot digital-twin-instance get --digital-twin-instance-id <digital-twin-instance-OCID>
Para obtener más información, consulte Obtención de detalles de instancia de un gemelo digital.

Paso 7: Enviar datos

Según su escenario, puede conectarse a la instancia de gemelo digital mediante MQTTS, HTTPS o mediante WebSocket. Para obtener más ejemplos de escenarios, consulte Connecting a Device.

  • Uso de Curl

    Shells de estilo POSIX: utilice este comando curl al utilizar bash, zsh, terminal macOS, Linux o Git Bash en Windows para enviar un mensaje de texto sin formato de ejemplo para probar la conexión. Sustituya device-cert.pem y device-key.pem por la ruta de acceso a los archivos de su entorno.
    curl --cert /path/device-cert.pem --key /path/device-key.pem \
    -H "Content-Type: text/plain" \
    -d "sample data 1" \
    "https://<iot-domain-short-id>.device.iot.<region>.oci.oraclecloud.com/sampletopic"

    Windows Powershell: utilice este comando curl, sustituya device-cert.pem y device-key.pem por los valores de su entorno.

    curl.exe --cert /path/device-cert.pem --key /path/device-key.pem \
    -H "Content-Type: text/plain" \
    -d "sample data 1" \
    "https://<iot-domain-short-id>.device.iot.<region>.oci.oraclecloud.com/sampletopic"

    Al completar el Paso 3: Crear una instancia gemela digital, si ha definido el valor del parámetro de clave externa con comillas, debe incluir las comillas al enviar los datos: "external-key". Para obtener más información sobre las mejores prácticas, consulte Solución de problemas.

  • Utilice cualquier cliente MQTT para suscribirse a un tema mediante MQTTS. En este ejemplo se utiliza MQTTx.

    Para enviar datos de muestra y probar la conexión:

    1. Introduzca el host del dispositivo como host, por ejemplo:
      mqtts://<domain-short-id>.device.iot.<region>.oci.oraclecloud.com
    2. Introduzca el puerto: 8883
    3. ID de cliente: su ID de cliente
    4. Inicio Limpio: True
    5. Active el conmutador para activar TLS.
    6. Seleccione la opción: CA or Self Firm certificates
    7. Introduzca la ubicación del archivo de certificado de cliente en el paso 15 de Creación de un certificado gestionado externamente: your-certificate.pem
    8. Introduzca la ubicación del archivo de clave de cliente en el paso 1 de Generate a New Private Key: your-private-key.pem
    9. Seleccione Connect (Conectar).

      MQTTx

      Conéctese mediante MQTTx.

    10. Seleccione Nueva suscripción para recibir datos de un dispositivo.
    11. Introduzca el punto final como tema.
    12. En este ejemplo se muestran los mensajes publicados en el tema /endpoints/4321, en el nivel 1 de calidad de servicio (QoS):
      {
        "pulse": 300,
        "s02": 400
      }
      {
        "test": 100
      }

      Suscríbase a un tema en MQTTx.

Paso 7 opcional: supervisión de los datos IoT en APEX

Si configuró el acceso para ver sus datos en APEX y el dispositivo envió datos no procesados, puede utilizar esta sentencia SQL para ver la respuesta de datos no procesados de la instancia de gemelo digital en APEX.
select * from <domain-short-id-from-device-host>__IOT.RAW_DATA
where digital_twin_instance_id = '<digital-twin-instance-ocid>'