Configurar a infraestrutura de certificados OPC UA para o conector para OPC UA
Neste artigo, você vai aprender a configurar a infraestrutura de certificados OPC UA para o conector para OPC UA. Esta configuração permite determinar em quais servidores OPC UA você confia para estabelecer com segurança uma sessão.
Com base na especificação de 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, confira Infraestrutura de certificados OPC UA para o conector para OPC UA.
Pré-requisitos
Uma instância implantada das Operações do Azure IoT. Para implantar as Operações do Azure IoT para fins de demonstração e exploração, confira Início Rápido: Executar as Operações do Azure IoT no GitHub Codespaces com o K3s.
Habilitar configurações seguras na implantação das Operações do Azure IoT
Configurar um certificado de instância de aplicativo autoassinado
A implantação padrão do conector para OPC UA instala todos os recursos de que o cert-manager precisa para criar um certificado autoassinado em conformidade com OPC UA. Este certificado é armazenado no segredo aio-opc-opcuabroker-default-application-cert
. Esse segredo é mapeado para todos os pods do conector para OPC UA e atua como o certificado da instância do aplicativo cliente OPC UA. cert-manager
manipula a renovação automática deste certificado de instância de aplicativo.
Essa configuração costuma ser suficiente para uma comunicação segura e em conformidade 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 de aplicativo. Para o conector para OPC UA, execute as seguintes etapas:
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.
Dica
Normalmente, um servidor OPC UA tem uma interface que permite exportar seu certificado de instância de aplicativo. Essa interface não é padronizada. Para servidores como KEPServerEx, há uma interface do usuário de configuração baseada no Windows para gerenciamento de certificados. Outros servidores podem ter uma interface da Web ou usar pastas do sistema operacional para armazenar os certificados. Consulte o manual do usuário do servidor para descobrir como exportar o certificado da instância do aplicativo. Depois de ter o certificado, certifique-se de que ele esteja codificado em DER ou PEM. Normalmente armazenados 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
para transformar o certificado no formato necessário.Adicione o certificado da 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 criado quando você implanta operações de IoT do Azure.
Para um certificado codificado em 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 em 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 seu servidor OPC UA usar um certificado emitido por uma autoridade de certificação (AC), você poderá confiar na AC ao adicionar o respectivo certificado de chave pública à lista de certificados confiáveis do conector para OPC UA. Agora o conector para OPC UA confia automaticamente em todos os servidores que usam um certificado válido emitido pela AC. 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 AC, conclua as seguintes etapas:
Obtenha a codificação de chave pública do certificado da AC no formato DER ou PEM. Esses certificados normalmente são armazenados em arquivos com a extensão .der ou .crt. Obtenha a CRL da AC. Esta lista normalmente está em um arquivo com o .crl. Verifique a documentação do servidor OPC UA para obter detalhes.
Salve o certificado de autoridade de certificação e a CRL no segredo nativo aio-opc-ua-broker-trust-list do Kubernetes.
Para um certificado AC codificado em 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 codificado em 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 usar um certificado emitido por uma AC, mas você não quiser confiar em todos os certificados emitidos pela AC, conclua as seguintes etapas:
Confie no certificado da instância de aplicativo do servidor OPC UA seguindo as três primeiras etapas da seção anterior.
Além do certificado propriamente dito, o conector para OPC UA precisa do certificado de AC para validar adequadamente a cadeia de emissor do certificado do servidor OPC UA. Adicione o certificado de autoridade de certificação e sua CRL (lista de certificados revogados) a uma lista separada chamada aio-opc-ua-broker-issuer-list implementada como um segredo do Kubernetes.
Salve o certificado de AC e a CRL no segredo
aio-opc-ua-broker-issuer-list
.# 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 em 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ê vai precisar configurar seu servidor OPC UA para confiar no certificado da instância de aplicativo do conector para OPC UA:
Para extrair o certificado do conector para OPC UA para um arquivo
opcuabroker.crt
, 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
Muitos servidores OPC UA dão suporte apenas a 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
Consulte a documentação do servidor OPC UA para saber como adicionar o arquivo de certificado
opcuabroker.crt
ouopcuabroker.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 AC corporativa emite este certificado e você precisa do certificado de autoridade de certificação para a sua configuração. Muitas vezes, há uma hierarquia de ACs e você precisa adicionar a cadeia de validação completa de ACs à sua configuração.
O exemplo a seguir faz referência aos seguintes itens:
Item | Descrição |
---|---|
opcuabroker-certificate.der | Arquivo que contém a chave pública do certificado de instância de aplicativo de nível empresarial. |
opcuabroker-certificate.pem | Arquivo que contém a chave privada do certificado de instância de aplicativo de nível empresarial. |
subjectName |
A cadeia de caracteres de nome da entidade inserida no certificado da instância do aplicativo. |
applicationUri |
O URI da instância do aplicativo inserido na instância do aplicativo. |
enterprise-grade-ca-1.der | Arquivo que contém a chave pública do certificado de AUTORIDADE de certificação de nível empresarial. |
enterprise-grade-ca-1.crl | O arquivo CRL da AC. |
Como os exemplos anteriores, você usa um segredo Kubernetes dedicado para armazenar os certificados e CRLs. Para configurar o certificado da instância de aplicativo de nível empresarial, conclua as seguintes etapas:
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>
Se você usar a AC para emitir certificados para o agente OPC UA, configure o segredoaio-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 empresarial, 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.