Condividi tramite


Configurare l'infrastruttura di certificati OPC UA per il connettore per OPC UA

Questo articolo illustra come configurare l'infrastruttura di certificati OPC UA per il connettore per OPC UA. Questa configurazione consente di determinare con quali server OPC UA considerare attendibili per stabilire in modo sicuro una sessione.

In base alla specifica OPC UA, il connettore per OPC UA funge da singola applicazione OPC UA quando stabilisce comunicazioni sicure con i server OPC UA. Il connettore per OPC UA usa lo stesso certificato dell'istanza dell'applicazione per tutti i canali protetti che apre ai server OPC UA.

Per altre informazioni vedere Infrastruttura di certificati OPC UA per il connettore per OPC UA.

Prerequisiti

Configurare un certificato di istanza dell'applicazione autofirmato

La distribuzione predefinita del connettore per OPC UA installa tutte le risorse necessarie da cert-manager per creare un certificato autofirmato conforme a OPC UA. Questo certificato viene archiviato nel aio-opc-opcuabroker-default-application-cert segreto. Questo segreto viene mappato in tutti i pod del connettore per OPC UA e funge da certificato dell'istanza dell'applicazione client OPC UA. cert-manager gestisce il rinnovo automatico del certificato dell'istanza dell'applicazione.

Questa configurazione è in genere sufficiente per la comunicazione conforme e sicura tra i server OPC UA e il connettore per OPC UA in un ambiente dimostrativo o di esplorazione. Per un ambiente di produzione, usare i certificati dell'istanza dell'applicazione di livello aziendale nella distribuzione.

Configurare l'elenco di certificati attendibili

Per connettersi a un asset, è prima necessario stabilire l'autenticazione reciproca dell'applicazione. Per il connettore per OPC UA, completare la procedura seguente:

  1. Ottenere il certificato dell'istanza dell'applicazione server OPC UA come file. Questi file in genere hanno un'estensione .der o .crt. Questa è solo la chiave pubblica.

    Suggerimento

    In genere, un server OPC UA ha un'interfaccia che consente di esportare il certificato dell'istanza dell'applicazione. Questa interfaccia non è standardizzata. Per i server come KEPServerEx, è disponibile un'interfaccia utente di configurazione basata su Windows per la gestione dei certificati. Altri server possono avere un'interfaccia Web o usare cartelle del sistema operativo per archiviare i certificati. Fare riferimento al manuale dell'utente del server per informazioni su come esportare il certificato dell'istanza dell'applicazione. Dopo aver ottenuto il certificato, assicurarsi che sia codificato con DER o PEM. In genere archiviato nei file con estensione .der o .crt. Se il certificato non è in uno di questi formati di file, usare uno strumento come openssl per trasformare il certificato nel formato richiesto.

  2. Aggiungere il certificato dell'istanza dell'applicazione del server OPC UA all'elenco di certificati attendibili. Questo elenco viene implementato come segreto nativo Kubernetes denominato aio-opc-ua-broker-trust-list creato quando si distribuiscono le operazioni di Azure IoT.

    Per un certificato con codifica DER in un file come ./my-server.der, eseguire il comando seguente:

    # 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"
    

    Per un certificato con codifica PEM in un file, ad esempio ./my-server.crt, eseguire i comandi seguenti:

    # 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 il server OPC UA usa un certificato emesso da un'autorità di certificazione (CA), è possibile considerare attendibile la CA aggiungendo il relativo certificato di chiave pubblica al connettore per l'elenco di certificati attendibili OPC UA. Il connettore per OPC UA ora considera automaticamente attendibili tutti i server che usano un certificato valido rilasciato dalla CA. Non è quindi necessario aggiungere in modo esplicito il certificato del server OPC UA al connettore per l'elenco di certificati attendibili OPC UA.

Per considerare attendibile una CA, completare i passaggi seguenti:

  1. Ottenere la codifica della chiave pubblica del certificato CA in formato DER o PEM. Questi certificati vengono in genere archiviati nei file con estensione .der o .crt. Ottenere il CRL della CA. Questo elenco si trova in genere in un file con estensione .crl. Per informazioni dettagliate, vedere la documentazione relativa al server OPC UA.

  2. Salvare il certificato della CA e il CRL nel segreto nativo kubernetes aio-opc-ua-broker-trust-list .

    Per un certificato CA codificato DER in un file, ad esempio ./my-server-ca.der, eseguire i comandi seguenti:

    # 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}"
    

    Per un certificato CA con codifica PEM in un file, ad esempio ./my-server-ca.crt, eseguire i comandi seguenti:

    # 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}"
    

Configurare l'elenco dei certificati dell'autorità emittente

Se il server OPC UA usa un certificato emesso da una CA, ma non si vuole considerare attendibili tutti i certificati rilasciati dalla CA, completare la procedura seguente:

  1. Considerare attendibile il certificato dell'istanza dell'applicazione del server OPC UA seguendo i primi tre passaggi della sezione precedente.

  2. Oltre al certificato stesso, il connettore per OPC UA richiede il certificato CA per convalidare correttamente la catena di autorità di certificazione del certificato del server OPC UA. Aggiungere il certificato DELLA CA e il relativo elenco di revoche di certificati (CRL) a un elenco separato denominato aio-opc-ua-broker-issuer-list implementato come segreto Kubernetes.

    1. Salvare il certificato ca e il CRL nel aio-opc-ua-broker-issuer-list segreto.

      # 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"
      

      Per un certificato con codifica PEM in un file, ad esempio ./my-server-ca.crt, eseguire i comandi seguenti:

      # 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"
      

Configurare il server OPC UA

Per completare la configurazione dell'attendibilità reciproca dell'autenticazione dell'applicazione, è necessario configurare il server OPC UA in modo che consideri attendibile il connettore per il certificato dell'istanza dell'applicazione OPC UA:

  1. Per estrarre il connettore per il certificato OPC UA in un file opcuabroker.crt, eseguire il comando seguente:

    kubectl -n azure-iot-operations get secret aio-opc-opcuabroker-default-application-cert -o jsonpath='{.data.tls\.crt}' | base64 -d > opcuabroker.crt
    
  2. Molti server OPC UA supportano solo i certificati nel formato DER. Se necessario, usare il comando seguente per convertire il certificato opcuabroker.crt in opcuabroker.der:

    openssl x509 -outform der -in opcuabroker.crt -out opcuabroker.der
    
  3. Consultare la documentazione del server OPC UA per informazioni su come aggiungere il file di certificato opcuabroker.crt o opcuabroker.der all'elenco di certificati attendibili del server.

Configurare un certificato dell'istanza dell'applicazione di livello aziendale

Per gli ambienti di produzione, è possibile configurare il connettore per OPC UA per l'uso di un certificato di istanza dell'applicazione di livello aziendale. In genere, una CA aziendale rilascia questo certificato ed è necessario il certificato della CA per la configurazione. Spesso è presente una gerarchia di CA ed è necessario aggiungere la catena completa di convalida delle ca alla configurazione.

L'esempio seguente fa riferimento agli elementi seguenti:

Articolo Descrizione
opcuabroker-certificate.der File contenente la chiave pubblica del certificato dell'istanza dell'applicazione di livello aziendale.
opcuabroker-certificate.pem File contenente la chiave privata del certificato dell'istanza dell'applicazione di livello aziendale.
subjectName Stringa del nome soggetto incorporata nel certificato dell'istanza dell'applicazione.
applicationUri URI dell'istanza dell'applicazione incorporato nell'istanza dell'applicazione.
enterprise-grade-ca-1.der File contenente la chiave pubblica del certificato CA di livello aziendale.
enterprise-grade-ca-1.crl File CRL della CA.

Come negli esempi precedenti, si usa un segreto Kubernetes dedicato per archiviare i certificati e i CRL. Per configurare il certificato dell'istanza dell'applicazione di livello aziendale, completare la procedura seguente:

  1. Salvare i certificati e il CRL nel segreto aio-opc-ua-broker-client-certificate usando il comando seguente:

    # 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 si usa la CA per rilasciare certificati per il broker OPC UA, configurare il segreto aio-opc-ua-broker-issuer-list . Usare un client Kubernetes, kubectl ad esempio per configurare i segreti 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"
    

Ora che il connettore per OPC UA usa il certificato aziendale, non dimenticare di aggiungere la chiave pubblica del nuovo certificato agli elenchi di certificati attendibili di tutti i server OPC UA a cui deve connettersi.