Compartir vía


Configurar la infraestructura de certificados de OPC UA para la versión preliminar del conector para OPC UA

Importante

Versión preliminar de operaciones de Azure IoT: habilitada por Azure Arc está actualmente en versión preliminar. No se debería usar este software en versión preliminar en entornos de producción.

Deberá implementar una nueva instalación de Azure IoT Operations cuando esté disponible una versión general. No podrá actualizar una instalación de versión preliminar.

Consulte Términos de uso complementarios para las versiones preliminares de Microsoft Azure para conocer los términos legales que se aplican a las características de Azure que se encuentran en la versión beta, en versión preliminar o que todavía no se han publicado para que estén disponibles con carácter general.

En este artículo, obtendrá información sobre cómo configurar la infraestructura de certificados de OPC UA para el conector para OPC UA. Esta configuración le permite determinar en qué servidores OPC UA confía para establecer una sesión de manera segura.

De acuerdo con la especificación de OPC UA, el conector para OPC UA actúa como una sola aplicación de OPC UA cuando establece comunicaciones seguras con los servidores OPC UA. El conector para OPC UA usa el mismo certificado de instancia de aplicación para todos los canales seguros que abre en los servidores OPC UA.

Para obtener más información, consulte Infraestructura de los certificados de OPC UA para el conector para OPC UA.

Requisitos previos

Una instancia implementada de la versión preliminar de Operaciones de IoT de Azure. Para implementar Operaciones de IoT de Azure con fines de demostración y exploración, consulte Inicio rápido: Ejecución de la versión preliminar de Operaciones de IoT de Azure en GitHub Codespaces con K3s.

Configuración de un certificado de instancia de aplicación autofirmado

La implementación predeterminada del conector para OPC UA instala todos los recursos que necesita el administrador de certificados para crear un certificado autofirmado compatible con OPC UA. Este certificado se almacena en el secreto aio-opc-opcuabroker-default-application-cert. Este secreto se asigna a todos los pods del conector para OPC UA y actúa como el certificado de instancia de aplicación cliente de OPC UA. cert-manager controla la renovación automática de este certificado de instancia de aplicación.

Esta configuración suele ser suficiente para una comunicación compatible y segura entre los servidores de OPC UA y el conector para OPC UA en un entorno de demostración o exploración. Para un entorno de producción, use certificados de instancia de aplicación de nivel empresarial en la implementación.

Configuración de la lista de certificados de confianza

Para conectarse a un recurso, primero debe establecer la confianza mutua de autenticación de la aplicación. Para el conector para OPC UA, complete los pasos siguientes:

  1. Obtenga el certificado de instancia de la aplicación de servidor OPC UA como un archivo. Estos archivos suelen tener una extensión .der o .crt. Esta solo es la clave pública.

    Sugerencia

    Normalmente, un servidor OPC UA tiene una interfaz que le permite exportar su certificado de instancia de aplicación. Esta interfaz no está estandarizada. Para servidores como KEPServerEx, hay una interfaz de usuario de configuración basada en Windows para la administración de certificados. Otros servidores pueden tener una interfaz web o usar carpetas del sistema operativo para almacenar los certificados. Consulte el manual de usuario del servidor para averiguar cómo exportar el certificado de instancia de aplicación. Una vez que tenga el certificado, asegúrese de que esté codificado en DER o PEM. Normalmente se almacena en archivos con la extensión .der o .crt. Si el certificado no está en uno de esos formatos de archivo, use una herramienta como openssl para transformar el certificado en el formato necesario.

  2. Agregue el certificado de instancia de aplicación del servidor OPC UA a la lista de certificados de confianza. Esta lista se implementa como un secreto nativo de Kubernetes llamado aio-opc-ua-broker-trust-list que se crea al implementar Operaciones de IoT de Azure.

    Para un certificado codificado en DER en un archivo como ./my-server.der, ejecute el siguiente comando:

    # Append my-server.der OPC UA server certificate to the trusted certificate list secret as a new entry
    data=$(kubectl create secret generic temp --from-file=my-server.der=./my-server.der --dry-run=client -o jsonpath='{.data}')
    kubectl patch secret aio-opc-ua-broker-trust-list -n azure-iot-operations -p "{\"data\": $data}"
    

    Para un certificado codificado en PEM en un archivo como ./my-server.crt, ejecute el siguiente comando:

    # Append my-server.crt OPC UA server certificate to the trusted certificate list secret as a new entry
    data=$(kubectl create secret generic temp --from-file=my-server.crt=./my-server.crt --dry-run=client -o jsonpath='{.data}')
    kubectl patch secret aio-opc-ua-broker-trust-list -n azure-iot-operations -p "{\"data\": $data}"
    

Si el servidor OPC UA usa un certificado emitido por una entidad de certificación (CA), puede confiar en la entidad de certificación si agrega su certificado de clave pública a la lista de certificados de confianza del conector para OPC UA. El conector para OPC UA ahora confía automáticamente en todos los servidores que usan un certificado válido emitido por la entidad de certificación. Por lo tanto, no es necesario agregar explícitamente el certificado del servidor OPC UA a la lista de certificados de confianza del conector para OPC UA.

Para confiar en una entidad de certificación, complete los pasos siguientes:

  1. Obtenga la clave pública del certificado de entidad de certificación codificada en formato DER o PEM. Estos certificados se almacenan normalmente en archivos con la extensión .der o .crt. Obtenga la CRL de la entidad de certificación. Esta lista suele estar en un archivo con la extensión .crl. Consulte la documentación del servidor OPC UA para obtener más información.

  2. Guarde el certificado de entidad de certificación y la CRL en el secreto nativo de Kubernetes aio-opc-ua-broker-trust-list.

    Para un certificado de entidad de certificación con codificación DER en un archivo como ./my-server-ca.der, ejecute los siguientes comandos:

    # Append CA certificate to the trusted certificate list secret as a new entry
    data=$(kubectl create secret generic temp --from-file=my-server-ca.der=./my-server-ca.der --dry-run=client -o jsonpath='{.data}')
    kubectl patch secret aio-opc-ua-broker-trust-list -n azure-iot-operations -p "{`"data`": $data}"
    
    # Append the CRL to the trusted certificate list secret as a new entry
    data=$(kubectl create secret generic temp --from-file= my-server-ca.crl=./ my-server-ca.crl --dry-run=client -o jsonpath='{.data}')
    kubectl patch secret aio-opc-ua-broker-trust-list -n azure-iot-operations -p "{`"data`": $data}"
    

    Para un certificado de entidad de certificación con codificación PEM en un archivo como ./my-server-ca.crt, ejecute los comandos siguientes:

    # Append CA certificate to the trusted certificate list secret as a new entry
    data=$(kubectl create secret generic temp --from-file=my-server-ca.crt=./my-server-ca.crt --dry-run=client -o jsonpath='{.data}')
    kubectl patch secret aio-opc-ua-broker-trust-list -n azure-iot-operations -p "{`"data`": $data}"
    
    # Append the CRL to the trusted certificates list secret as a new entry
    data=$(kubectl create secret generic temp --from-file=my-server-ca.crl=./my-server-ca.crl --dry-run=client -o jsonpath='{.data}')
    kubectl patch secret aio-opc-ua-broker-trust-list -n azure-iot-operations -p "{`"data`": $data}"
    

Configuración de la lista de certificados del emisor

Si el servidor OPC UA usa un certificado emitido por una entidad de certificación, pero no desea confiar en todos los certificados emitidos por la entidad de certificación, complete los pasos siguientes:

  1. Confíe en el certificado de instancia de aplicación del servidor OPC UA siguiendo los tres primeros pasos de la sección anterior.

  2. Además del propio certificado, el conector para OPC UA necesita el certificado de entidad de certificación para validar correctamente la cadena del emisor del certificado del servidor OPC UA. Agregue el certificado de entidad de certificación y su lista de revocación de certificados (CRL) a una lista independiente llamada aio-opc-ua-broker-issuer-list que está implementada como un secreto de Kubernetes.

    1. Guarde el certificado de entidad de certificación y la CRL en el secreto aio-opc-ua-broker-issuer-list.

      Para un certificado codificado en DER en un archivo como ./my-server-ca.der, ejecute los siguientes comandos:

      # Append CA certificate to the issuer list secret as a new entry
      data=$(kubectl create secret generic temp --from-file=my-server-ca.der=./my-server-ca.der --dry-run=client -o jsonpath='{.data}')
      kubectl patch secret aio-opc-ua-broker-issuer-list -n azure-iot-operations -p "{`"data`": $data}"
      
      # Append the CRL to the issuer list secret as a new entry
      data=$(kubectl create secret generic temp --from-file=my-server-ca.crl=./my-server-ca.crl --dry-run=client -o jsonpath='{.data}')
      kubectl patch secret aio-opc-ua-broker-issuer-list -n azure-iot-operations -p "{`"data`": $data}"
      

      Para un certificado codificado en PEM en un archivo como ./my-server-ca.crt, ejecute los comandos siguientes:

      # Append CA certificate to the issuer list secret as a new entry
      data=$(kubectl create secret generic temp --from-file=my-server-ca.crt=./my-server-ca.crt --dry-run=client -o jsonpath='{.data}')
      kubectl patch secret aio-opc-ua-broker-issuer-list -n azure-iot-operations -p "{`"data`": $data}"
      
      # Append the CRL to the issuer list secret as a new entry
      data=$(kubectl create secret generic temp --from-file=my-server-ca.crl=./my-server-ca.crl --dry-run=client -o jsonpath='{.data}')
      kubectl patch secret aio-opc-ua-broker-issuer-list -n azure-iot-operations -p "{`"data`": $data}"
      

Configuración del servidor OPC UA

Para completar la configuración de la confianza mutua de autenticación de la aplicación, debe configurar el servidor OPC UA para que confíe en el certificado de instancia de aplicación del conector para OPC UA:

  1. Para extraer el certificado del conector para OPC UA en un archivo opcuabroker.crt, ejecute el siguiente comando:

    kubectl -n azure-iot-operations get secret aio-opc-opcuabroker-default-application-cert -o jsonpath='{.data.tls\.crt}' | base64 -d > opcuabroker.crt
    
  2. Muchos servidores OPC UA solo admiten certificados en formato DER. Si es necesario, use el siguiente comando para convertir el certificado opcuabroker.crt en opcuabroker.der:

    openssl x509 -outform der -in opcuabroker.crt -out opcuabroker.der
    
  3. Consulte la documentación del servidor OPC UA para obtener información sobre cómo agregar el archivo de certificado opcuabroker.crt o opcuabroker.der a la lista de certificados de confianza del servidor.

Configuración de un certificado de instancia de aplicación de nivel empresarial

En entornos de producción, puede configurar el conector para OPC UA para que use un certificado de instancia de aplicación de nivel empresarial. Normalmente, una entidad de certificación empresarial emite este certificado y se necesita el certificado de entidad de certificación en la configuración. A menudo, hay una jerarquía de entidades de certificación y debe agregar la cadena de validación completa de CA a la configuración.

En el ejemplo siguiente se hace referencia a los siguientes elementos:

Elemento Descripción
opcuabroker-certificate.der Archivo que contiene la clave pública del certificado de instancia de aplicación de nivel empresarial.
opcuabroker-certificate.pem Archivo que contiene la clave privada del certificado de instancia de aplicación de nivel empresarial.
subjectName Cadena de nombre del firmante insertada en el certificado de instancia de aplicación.
applicationUri URI de la instancia de aplicación insertada en la instancia de aplicación.
enterprise-grade-ca-1.der Archivo que contiene la clave pública del certificado de entidad de certificación de nivel empresarial.
enterprise-grade-ca-1.crl El archivo CRL de la entidad de certificación.

Al igual que en los ejemplos anteriores, se usa un secreto dedicado de Kubernetes para almacenar los certificados y las CRL. Para configurar el certificado de instancia de aplicación de nivel empresarial, complete los pasos siguientes:

  1. Guarde los certificados y la CRL en el secreto aio-opc-ua-broker-client-certificate mediante el comando siguiente:

    # Create aio-opc-ua-broker-client-certificate secret
    # Upload OPC UA public key certificate as an entry to the secret
    # Upload OPC UA private key certificate as an entry to the secret
    kubectl create secret generic aio-opc-ua-broker-client-certificate -n azure-iot-operations  \
      --from-file=opcuabroker-certificate.der=./opcuabroker-certificate.der \
      --from-file=opcuabroker-certificate.pem=./opcuabroker-certificate.pem
    
  2. Si usa la entidad de certificación para emitir certificados para el agente de OPC UA, configure el secreto aio-opc-ua-broker-issuer-list. Use un cliente de Kubernetes (por ejemplo, kubectl) para configurar los secretos enterprise-grade-ca-1.der y enterprise-grade-ca-1.crl:

    # Append CA certificate to the issuer list secret as a new entry
    data=$(kubectl create secret generic temp --from-file=enterprise-grade-ca-1.der=./enterprise-grade-ca-1.der --dry-run=client -o jsonpath='{.data}')
    kubectl patch secret aio-opc-ua-broker-issuer-list -n azure-iot-operations -p "{`"data`": $data}"
    
    # Append the CRL to the issuer list secret as a new entry
    data=$(kubectl create secret generic temp --from-file= enterprise-grade-ca-1.crl=./enterprise-grade-ca-1.crl --dry-run=client -o jsonpath='{.data}')
    kubectl patch secret aio-opc-ua-broker-issuer-list -n azure-iot-operations -p "{`"data`": $data}"
    
  3. Actualice la implementación de conector para OPC UA para usar el nuevo origen de secret para los certificados de instancia de aplicación mediante el siguiente comando:

    az k8s-extension update \
        --version 0.7.0-preview \
        --name azure-iot-operations-qlll2 \
        --release-train preview \
        --cluster-name <cluster-name> \
        --resource-group <azure-resource-group> \
        --cluster-type connectedClusters \
        --auto-upgrade-minor-version false \
        --config connectors.values.securityPki.applicationCert=aio-opc-ua-broker-client-certificate \
        --config connectors.values.securityPki.subjectName=<subjectName> \
        --config connectors.values.securityPki.applicationUri=<applicationUri>
    

Ahora que el conector para OPC UA usa el certificado empresarial, no olvide agregar la clave pública del nuevo certificado en las listas de certificados de confianza de todos los servidores OPC UA a los que necesita conectarse.