Partilhar via


Configurar a infraestrutura de certificados OPC UA para o conector para OPC UA

Neste artigo, você aprenderá a configurar a infraestrutura de certificados OPC UA para o conector para OPC UA. Essa configuração permite determinar com quais servidores OPC UA você confia para estabelecer uma sessão com segurança.

Com base na especificação OPC UA, o conector para OPC UA atua como um único aplicativo OPC UA quando estabelece comunicações seguras com servidores OPC UA. O conector para OPC UA usa o mesmo certificado de instância de aplicativo para todos os canais seguros que abre para seus servidores OPC UA.

Para saber mais, consulte Infraestrutura de certificados OPC UA para o conector para OPC UA.

Pré-requisitos

Configurar um certificado de instância de aplicativo autoassinado

A implantação padrão do conector para OPC UA instala todos os recursos necessários para o cert-manager criar um certificado autoassinado compatível com OPC UA. Este certificado é armazenado em aio-opc-opcuabroker-default-application-cert segredo. Esse segredo é mapeado em todo o conector para pods OPC UA e atua como o certificado de instância do aplicativo cliente OPC UA. cert-manager lida com a renovação automática deste certificado de instância de aplicativo.

Essa configuração geralmente é suficiente para uma comunicação compatível e segura entre seus servidores OPC UA e o conector para OPC UA em um ambiente de demonstração ou exploração. Para um ambiente de produção, use certificados de instância de aplicativo de nível empresarial em sua implantação.

Configurar a lista de certificados confiáveis

Para se conectar a um ativo, primeiro você precisa estabelecer a confiança mútua de autenticação do aplicativo. Para o conector para OPC UA, conclua as seguintes etapas:

  1. Obtenha o certificado de instância do aplicativo de servidor OPC UA como um arquivo. Esses arquivos normalmente têm uma extensão .der ou .crt. Esta é apenas a chave pública.

    Gorjeta

    Normalmente, um servidor OPC UA tem uma interface que permite exportar seu certificado de instância do aplicativo. Esta interface não é padronizada. Para servidores como o KEPServerEx, há uma interface do usuário de configuração baseada no Windows para gerenciamento de certificados. Outros servidores podem ter uma interface Web ou usar pastas do sistema operacional para armazenar os certificados. Consulte o manual do usuário do seu servidor para saber como exportar o certificado de instância do aplicativo. Depois de ter o certificado, certifique-se de que está codificado DER ou PEM. Normalmente armazenado em arquivos com a extensão .der ou .crt. Se o certificado não estiver em um desses formatos de arquivo, use uma ferramenta como openssl transformar o certificado no formato necessário.

  2. Adicione o certificado de instância de aplicativo do servidor OPC UA à lista de certificados confiáveis. Essa lista é implementada como um segredo nativo do Kubernetes chamado aio-opc-ua-broker-trust-list que é criado quando você implanta as Operações do Azure IoT.

    Para um certificado codificado DER em um arquivo como ./my-server.der, execute o seguinte comando:

    # Append my-server.der OPC UA server certificate to the trusted certificate list secret as a new entry
    az iot ops connector opcua trust add --instance <your instance name> --resource-group <your resource group> --certificate-file "./my-server.der"
    

    Para um certificado codificado PEM em um arquivo como ./my-server.crt, execute o seguinte comando:

    # Append my-server.crt OPC UA server certificate to the trusted certificate list secret as a new entry
    az iot ops connector opcua trust add --instance <your instance name> --resource-group <your resource group> --certificate-file "./my-server.crt"
    

Se o servidor OPC UA usar um certificado emitido por uma autoridade de certificação (CA), você poderá confiar na CA adicionando seu certificado de chave pública à lista de certificados confiáveis do conector para OPC UA. O conector para OPC UA agora confia automaticamente em todos os servidores que usam um certificado válido emitido pela autoridade de certificação. Portanto, você não precisa adicionar explicitamente o certificado do servidor OPC UA à lista de certificados confiáveis do conector para OPC UA.

Para confiar em uma autoridade de certificação, conclua as seguintes etapas:

  1. Obtenha a codificação de chave pública do certificado da autoridade de certificação no formato DER ou PEM. Esses certificados são normalmente armazenados em arquivos com a extensão .der ou .crt. Obtenha a CRL da CA. Essa lista normalmente está em um arquivo com o .crl. Verifique a documentação do seu servidor OPC UA para obter detalhes.

  2. Salve o certificado da autoridade de certificação e a CRL no segredo nativo do Kubernetes aio-opc-ua-broker-trust-list .

    Para obter um certificado de autoridade de certificação codificado DER em um arquivo como ./my-server-ca.der, execute os seguintes comandos:

    # Append CA certificate to the trusted certificate list secret as a new entry
    az iot ops connector opcua trust add --instance <your instance name> --resource-group <your resource group> --certificate-file "./my-server-ca.der"
    
    # 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 um certificado de autoridade de certificação codificado PEM em um arquivo como ./my-server-ca.crt, execute os seguintes comandos:

    # Append CA certificate to the trusted certificate list secret as a new entry
    az iot ops connector opcua trust add --instance <your instance name> --resource-group <your resource group> --certificate-file "./my-server-ca.crt"
    
    # 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}"
    

Configurar a lista de certificados do emissor

Se o servidor OPC UA usa um certificado emitido por uma autoridade de certificação, mas você não deseja confiar em todos os certificados emitidos pela autoridade de certificação, conclua as seguintes etapas:

  1. Confie no certificado de instância de aplicativo do servidor OPC UA seguindo as três primeiras etapas na seção anterior.

  2. Além do certificado em si, o conector para OPC UA precisa do certificado CA para validar corretamente a cadeia emissora do certificado do servidor OPC UA. Adicione o certificado da autoridade de certificação e sua lista de revogação de certificados (CRL) a uma lista separada chamada aio-opc-ua-broker-issuer-list que é implementada como um segredo do Kubernetes.

    1. Salve o certificado da autoridade de certificação e a CRL em aio-opc-ua-broker-issuer-list segredo.

      # Append CA certificate to the issuer list secret as a new entry
      az iot ops connector opcua issuer add --instance <your instance name> --resource-group <your resource group> --certificate-file "./my-server-ca.der"
      
      # Append the CRL to the issuer list secret as a new entry
      az iot ops connector opcua issuer add --instance <your instance name> --resource-group <your resource group> --certificate-file "./my-server-ca.crl"
      

      Para um certificado codificado PEM em um arquivo como ./my-server-ca.crt, execute os seguintes comandos:

      # Append CA certificate to the issuer list secret as a new entry
      az iot ops connector opcua issuer add --instance <your instance name> --resource-group <your resource group> --certificate-file "./my-server-ca.crt"
      
      # Append the CRL to the issuer list secret as a new entry
      az iot ops connector opcua issuer add --instance <your instance name> --resource-group <your resource group> --certificate-file "./my-server-ca.crl"
      

Configurar o servidor OPC UA

Para concluir a configuração da confiança mútua de autenticação de aplicativo, você precisa configurar seu servidor OPC UA para confiar no conector para certificado de instância de aplicativo OPC UA:

  1. Para extrair o conector para o certificado OPC UA em um opcuabroker.crt arquivo, execute o seguinte comando:

    kubectl -n azure-iot-operations get secret aio-opc-opcuabroker-default-application-cert -o jsonpath='{.data.tls\.crt}' | base64 -d > opcuabroker.crt
    
  2. Muitos servidores OPC UA suportam apenas certificados no formato DER. Se necessário, use o seguinte comando para converter o certificado opcuabroker.crt em opcuabroker.der:

    openssl x509 -outform der -in opcuabroker.crt -out opcuabroker.der
    
  3. Consulte a documentação do seu servidor OPC UA para saber como adicionar o opcuabroker.crt arquivo de certificado ou opcuabroker.der à lista de certificados confiáveis do servidor.

Configurar um certificado de instância de aplicativo de nível empresarial

Para ambientes de produção, você pode configurar o conector para OPC UA para usar um certificado de instância de aplicativo de nível empresarial. Normalmente, uma autoridade de certificação corporativa emite esse certificado e você precisa do certificado da autoridade de certificação para sua configuração. Muitas vezes, há uma hierarquia de CAs e você precisa adicionar a cadeia de validação completa de CAs à sua configuração.

O exemplo a seguir faz referência aos seguintes itens:

Item Description
opcuabroker-certificate.der Arquivo que contém a chave pública do certificado de instância do aplicativo de nível empresarial.
opcuabroker-certificate.pem Arquivo que contém a chave privada do certificado de instância do aplicativo de nível empresarial.
subjectName A cadeia de caracteres do nome da entidade incorporada no certificado da instância do aplicativo.
applicationUri O URI da instância do aplicativo incorporado na instância do aplicativo.
classe empresarial-ca-1.der Arquivo que contém a chave pública do certificado de autoridade de certificação de nível empresarial.
Classe Empresarial-CA-1.CRL O arquivo CRL da autoridade de certificação.

Como os exemplos anteriores, você usa um segredo dedicado do Kubernetes para armazenar os certificados e CRLs. Para configurar o certificado de instância de aplicativo de nível empresarial, conclua as seguintes etapas:

  1. Salve os certificados e a CRL no segredo aio-opc-ua-broker-client-certificate usando o seguinte comando:

    # 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
    az iot ops connector opcua client add \
        --instance <your instance name> \
        -g <your resource group> \
        --public-key-file "./opcuabroker-certificate.der" \
        --private-key-file "./opcuabroker-certificate.pem" \
        --subject-name <subject name from the public key cert> \
        --application-uri <application uri from the public key cert>
    
  2. Se você usar a autoridade de certificação para emitir certificados para seu broker OPC UA, configure o segredo aio-opc-ua-broker-issuer-list . Use um cliente Kubernetes como kubectl para configurar os segredos enterprise-grade-ca-1.der e enterprise-grade-ca-1.crl:

    # Append CA certificate to the issuer list secret as a new entry
    az iot ops connector opcua issuer add --instance <your instance name> --resource-group <your resource group> --certificate-file "./enterprise-grade-ca-1.der"
    
    # Append the CRL to the issuer list secret as a new entry
    az iot ops connector opcua issuer add --instance <your instance name> --resource-group <your resource group> --certificate-file "./enterprise-grade-ca-1.crl"
    

Agora que o conector para OPC UA usa o certificado enterprise, não se esqueça de adicionar a chave pública do novo certificado às listas de certificados confiáveis de todos os servidores OPC UA aos quais ele precisa se conectar.