Google Cloud IoT Core se retirará el 16 de agosto de 2023. Comunícate con el equipo de cuentas de Google Cloud para obtener más información.

Verificar credenciales del dispositivo

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Cloud IoT Core ofrece autenticación de clave pública/privada por dispositivo mediante tokens web JSON (JWT). Para mayor seguridad, Cloud IoT Core puede verificar certificados de clave pública de dispositivo con certificados de CA a nivel de registro.

Los certificados de CA a nivel de registro son una función opcional para mayor seguridad. Su uso no es obligatorio.

Un certificado verificado certifica que un par de claves pública/privada pertenece a un dispositivo legítimo. Esto puede ser especialmente útil cuando el fabricante del dispositivo crea claves públicas y privadas, almacena la clave privada en el dispositivo y tiene la clave pública firmada por la CA.

Genera certificados de CA

Cloud IoT Core puede verificar certificados de clave pública de dispositivos con certificados de CA autofirmados y certificados de CA generados por terceros de confianza. Ambos tipos de certificados de CA se usan de la misma manera, pero cada uno se genera de manera diferente.

Certificados de CA autofirmados Certificados de CA de terceros
Los propietarios de la clave privada del dispositivo pueden generar los certificados Un tercero de confianza debe generar los certificados
Los propietarios de claves privadas del dispositivo crean y poseen las claves privadas de CA que firman los certificados Un tercero crea y posee las claves privadas de CA que firman los certificados
Se generan de forma gratuita Los terceros facturan por generar certificados y establecer una cadena de confianza con la CA

Certificados de CA autofirmados

Para generar un certificado de CA autofirmado (y la clave privada de CA correspondiente), completa los siguientes pasos:

  1. Crea una clave privada de CA. La clave privada de CA se asociará de forma exclusiva con el certificado de CA. Puedes generar una clave privada RSA de 2,048 bits con el siguiente comando:
    openssl genpkey -algorithm RSA -out ca_private.pem -pkeyopt rsa_keygen_bits:2048
    
  2. Genera el certificado de CA autofirmado. El siguiente comando genera un certificado RS256 que cumple con los requisitos de certificado de CA:
    openssl req -x509 -new -nodes -key ca_private.pem -sha256 -out ca_cert.pem -subj "/CN=unused"
    

Consulta Genera una clave RSA con un certificado X.509 autofirmado o Genera una clave ES256 con un certificado X.509 autofirmado para ver más ejemplos.

Certificados de CA de terceros

Para obtener un certificado de CA de un tercero de confianza, envía una CSR a la CA. Luego, la CA te envía un certificado de CA con el certificado de clave pública del dispositivo correspondiente firmado por la clave privada de la CA. Para obtener certificados de CA de terceros, sigue estos pasos:

  1. Crea una clave privada para el dispositivo. Puedes generar una clave privada RSA de 2,048 bits con el siguiente comando:
    openssl genpkey -algorithm RSA -out rsa_private.pem -pkeyopt rsa_keygen_bits:2048
    
  2. Crea una CSR desde la clave privada del dispositivo. La CSR mantiene en secreto la clave privada. El siguiente comando genera una CSR con una firma SHA-256:
    openssl req -new -sha256 -key rsa_private.pem -out rsa_cert.csr -subj "/CN=unused"
    
  3. Envíe la CSR a una CA y solicite un certificado. Cada CA tiene un proceso de aplicación diferente. Por ejemplo, es posible que deba registrar una cuenta con la CA y subir la CSR a un portal en línea.

Requisitos del certificado de CA

Todos los certificados de CA a nivel de registro deben cumplir con los siguientes requisitos:

  • El certificado de CA debe estar en el formato X.509v3 (RFC 5280), codificado en base64 y unido en -----BEGIN CERTIFICATE----- y -----END CERTIFICATE-----.
  • El certificado de CA debe ser un archivo .pem encriptado con un algoritmo compatible:
    • RSA con al menos 2048 bits
    • NIST P-256
  • El certificado de CA debe ser válido. Si intentas agregar un dispositivo a un registro y el certificado caducó, Cloud IoT Core muestra un error.

Agrega certificados de CA a un registro

Una vez que tengas certificados de CA, agrégalos a un registro. Cloud IoT Core verifica los certificados de CA a nivel de registro, por lo que todos los certificados de CA deben estar asociados con un registro. Se puede agregar un certificado a varios registros. Puedes agregar certificados de CA con Google Cloud Console, la API o gcloud.

Console

  1. Ve a la página Registros de Google Cloud Console.

    Ir a la página Registros

  2. En la parte superior de la página, haz clic en Crear registro.

  3. Haz clic en Agregar certificado de CA para escribir o pegar un certificado o subir un archivo .pem. Puedes agregar solo un certificado la primera vez que creas el registro, pero puedes agregar más certificados más adelante (hasta 10).

La página de detalles Registro de dispositivos incluye una pestaña de Certificados que muestra los certificados existentes y te permite agregar más.

gcloud

Para agregar o administrar certificados de CA, ejecuta uno de los comandos de gcloud iot registries credentials.

Para agregar un certificado nuevo a un registro, ejecuta el comando gcloud iot registries credentials create:

gcloud iot registries credentials create \
    --path=PATH_TO_CERTIFICATE \
    --project=PROJECT_ID \
    --registry=REGISTRY_ID \
    --region=REGION

API

El recurso DeviceRegistry incluye campos para definir certificados de CA a nivel de registro:

  • Se pueden definir hasta 10 credenciales (objetos RegistryCredential) para la verificación de credenciales del dispositivo.
  • Cada objeto RegistryCredential incluye un objeto PublicKeyCertificate que puedes usar para especificar datos de certificados, y un campo de solo salida proporciona detalles del certificado X.509.

Efecto en dispositivos existentes

Cuando agregas o quitas certificados, los dispositivos existentes en el registro (estén conectados o no) no se ven afectados. Si se revocan, borran o modifican los certificados de nivel de registro asociados a un dispositivo, el dispositivo no puede usar los mismos certificados de clave pública que usó cuando estaban en vigor los certificados de nivel de registro, pero aún puede conectarse a Cloud IoT Core con su clave privada.

Generar certificados de clave pública

Cloud IoT Core verifica los certificados de clave pública del dispositivo firmados por claves privadas de CA.

Para generar un certificado de clave pública firmado, sigue estos pasos:

  • Si el registro se configura con un certificado de CA autofirmado, firma una clave pública con la clave privada de CA.
    1. Crea una clave privada de dispositivo. Esta clave es diferente del certificado de CA y de la clave privada de CA. Puedes generar una clave privada RSA de 2,048 bits con el siguiente comando:
      openssl genpkey -algorithm RSA -out rsa_private.pem -pkeyopt rsa_keygen_bits:2048
      
    2. Crea una CSR desde la clave privada del dispositivo. El siguiente comando genera una CSR con una firma SHA-256:
      openssl req -new -sha256 -key rsa_private.pem -out rsa_cert.csr -subj "/CN=unused-device"
      
    3. Crea una clave pública y fírmala con la clave privada de la CA. El siguiente comando genera un certificado RS256 firmado que cumple con los requisitos de certificado de clave pública:
      openssl x509 -req -in rsa_cert.csr -CA ca_cert.pem -CAkey ca_private.pem \
          -CAcreateserial -sha256 -out rsa_cert.pem
      
  • Si se configura un registro con un certificado de CA de terceros, este contendrá un certificado de clave pública de dispositivo firmado por la clave privada de CA. Puedes extraer un certificado de clave pública de dispositivo RSA de un certificado de CA de RSA con el siguiente comando:
    openssl rsa -in ca_cert.pem -pubout -out rsa_cert.pem
    

Requisitos de certificados de clave pública

Los certificados de clave pública del dispositivo deben cumplir con los siguientes requisitos (además de los requisitos estándar de Cloud IoT Core para credenciales de dispositivo) a fin de verificarlos con certificados de CA a nivel de registro:

  • El certificado de CA debe estar en el formato X.509v3 (RFC 5280), codificado en base64 y unido en -----BEGIN CERTIFICATE----- y -----END CERTIFICATE-----.
  • El certificado de clave pública del dispositivo debe estar firmado por un certificado de CA específico a nivel de registro. Las CA intermedias no son compatibles.
    • El certificado de clave pública del dispositivo no debe ser idéntico al certificado a nivel del registro.
  • Sin claves públicas sin procesar.
  • Algoritmos JWT compatibles:
  • El certificado de clave pública del dispositivo debe ser válido. Si intentas crear o actualizar un dispositivo con un certificado vencido, Cloud IoT Core mostrará un error.

Estos requisitos se aplican cuando creas o actualizas el dispositivo. Si un registro no tiene certificados de CA definidos, se aceptan incondicionalmente todas las claves públicas del dispositivo.

Verifica certificados de clave pública

Cloud IoT Core verifica los certificados de clave pública del dispositivo con certificados de CA a nivel de registro cuando creas un dispositivo o modificas sus claves públicas. Puedes crear un dispositivo con Google Cloud Console, la API o gcloud. Puedes agregar, quitar y editar claves públicas con Google Cloud Console o la API.

Console

  1. Ve a la página Registros de Google Cloud Console.

    Ir a la página Registros

  2. Haz clic en el ID del registro del dispositivo.

  3. En el menú de registro a la izquierda, haga clic en Dispositivos.

  4. Haz clic en Crear un dispositivo.

    Para modificar las claves públicas de un dispositivo, haz clic en el ID del dispositivo en la página Devices y, luego, en Edit device en la parte superior de la página.

  5. Ingresa un ID de dispositivo que describa brevemente el dispositivo o que te ayude a identificarlo. (Este campo no se puede modificar más adelante). Para obtener información sobre los requisitos de tamaño y nombres de los dispositivos, consulta Requisitos de tamaño y caracteres permitidos.

  6. En Comunicación del dispositivo, selecciona Permitir o Bloquear. Esta opción te permite bloquear la comunicación cuando es necesario, por ejemplo, cuando un dispositivo no funciona correctamente. En la mayoría de los casos, es recomendable permitir la comunicación al crear el dispositivo por primera vez.

  7. En Formato de clave pública, selecciona RS256_X509 o ES256_X509. Pega el certificado de clave pública del dispositivo en el campo Valor de clave pública. También puedes establecer una fecha de vencimiento para la clave.

    Para agregar una clave a un dispositivo existente, haz clic en Agregar clave pública en la página Detalles del dispositivo.

    Para quitar una clave de un dispositivo existente, haz lo siguiente:

    1. Marca la casilla junto a la clave en la página Detalles del dispositivo.
    2. Haz clic en Borrar para quitar la clave.

    Para editar una clave, haz clic en el ícono Editar junto a la clave en la página Detalles del dispositivo.

  8. Selecciona el Método de entrada que desees usar para ingresar el certificado de clave pública del dispositivo.

    • Manual:Copia y pega el certificado de clave pública del dispositivo en el campo Valor de clave pública.
    • Subir: En el campo Valor de clave pública, haz clic en Explorar para seleccionar un archivo de la computadora.
  9. Usa los campos Clave y Valor para agregar metadatos de dispositivos opcionales, como un número de serie. Para obtener información sobre los requisitos de tamaño y nombres de los pares clave-valor de metadatos, consulte Requisitos de tamaño y caracteres permitidos.

  10. Selecciona un nivel de Cloud Logging para determinar qué eventos del dispositivo se envían a Cloud Logging.

  11. Haz clic en Crear para crear el dispositivo.

gcloud

Para crear un dispositivo, ejecuta el comando gcloud iot devices create.

Para crear un dispositivo con credenciales RS256 que cumplan con los requisitos de certificado de dispositivo, ejecuta el siguiente comando:

gcloud iot devices create DEVICE_ID \
    --project=PROJECT_ID \
    --region=REGION \
    --registry=REGISTRY_ID \
    --public-key path=rsa_cert.pem,type=rsa-x509-pem

Para crear un dispositivo con credenciales ES256 que cumpla con los requisitos de certificado del dispositivo, ejecute el siguiente comando:

gcloud iot devices create DEVICE_ID \
    --project=PROJECT_ID \
    --region=REGION \
    --registry=REGISTRY_ID \
    --public-key path=ec_cert.pem,type=es256-x509-pem

API

Usa los siguientes métodos para crear dispositivos o modificar claves públicas:

Las claves públicas se especifican en el campo credentials del recurso Device en la API de Cloud IoT Core. Consulta DeviceCredential en el recurso Dispositivo para obtener más información.

Debido a que hay uno o más certificados a nivel de registro, el recurso Device debe cumplir con los requisitos de certificado de dispositivo.

  • El campo Device.credentials[i].public_key.key debe establecerse en el contenido del certificado de clave pública del dispositivo (incluidos el encabezado y el pie de página).
  • El campo Device.credentials[i].public_key.format debe configurarse como RSA_X509_PEM o ES256_X509_PEM.