다음을 통해 공유


OPC UA 커넥터를 위한 OPC UA 인증서 인프라 구성

이 문서에서는 OPC UA 커넥터에 대한 OPC UA 인증서 인프라를 구성하는 방법을 알아봅니다. 이 구성을 사용하면 세션을 안전하게 설정하기 위해 신뢰하는 OPC UA 서버를 결정할 수 있습니다.

OPC UA 사양을 기반으로 OPC UA 커넥터는 OPC UA 서버와 보안 통신을 설정할 때 단일 OPC UA 애플리케이션으로 작동합니다. OPC UA 커넥터는 OPC UA 서버에 열리는 모든 보안 채널에 대해 동일한 애플리케이션 인스턴스 인증서를 사용합니다.

자세한 내용은 OPC UA 커넥터용 OPC UA 인증서 인프라를 참조하세요.

필수 조건

자체 서명된 애플리케이션 인스턴스 인증서 구성

OPC UA용 커넥터의 기본 배포는 cert-manager가 OPC UA 호환 자체 서명된 인증서를 만드는 데 필요한 모든 리소스를 설치합니다. 이 인증서는 aio-opc-opcuabroker-default-application-cert 비밀에 저장됩니다. 이 비밀은 모든 OPC UA Pod 커넥터에 매핑되고 OPC UA 클라이언트 애플리케이션 인스턴스 인증서 역할을 합니다. cert-manager는 이 애플리케이션 인스턴스 인증서의 자동 갱신을 처리합니다.

이러한 구성은 일반적으로 데모 또는 탐색 환경에서 OPC UA 서버와 OPC UA 커넥터 간의 규정을 준수하고 안전한 통신에 충분합니다. 프로덕션 환경의 경우 배포 시 엔터프라이즈급 애플리케이션 인스턴스 인증서를 사용합니다.

신뢰할 수 있는 인증서 목록 구성

자산에 연결하려면 먼저 애플리케이션 인증 상호 신뢰를 설정해야 합니다. OPC UA 커넥터의 경우 다음 단계를 완료합니다.

  1. OPC UA 서버 애플리케이션의 인스턴스 인증서를 파일로 가져옵니다. 이러한 파일의 확장자는 일반적으로 .der 또는 .crt입니다. 이는 공개 키일 뿐입니다.

    일반적으로 OPC UA 서버에는 애플리케이션 인스턴스 인증서를 내보낼 수 있는 인터페이스가 있습니다. 이 인터페이스는 표준화되지 않았습니다. KEPServerEx와 같은 서버의 경우 인증서 관리를 위한 Windows 기반 구성 UI가 있습니다. 다른 서버에는 웹 인터페이스가 있거나 운영 체제 폴더를 사용하여 인증서를 저장할 수 있습니다. 애플리케이션 인스턴스 인증서를 내보내는 방법을 알아보려면 서버의 사용 설명서를 참조하세요. 인증서를 받은 후에는 DER 또는 PEM으로 인코딩되었는지 확인합니다. 일반적으로 .der 또는 .crt 확장자를 가진 파일에 저장됩니다. 인증서가 해당 파일 형식 중 하나가 아닌 경우 openssl과 같은 도구를 사용하여 인증서를 필요한 형식으로 변환합니다.

  2. OPC UA 서버의 애플리케이션 인스턴스 인증서를 신뢰할 수 있는 인증서 목록에 추가합니다. 이 목록은 Azure IoT Operations를 배포할 때 생성되는 aio-opc-ua-broker-trust-list라는 Kubernetes 네이티브 비밀로 구현됩니다.

    ./my-server.der와 같은 파일에 있는 DER 인코딩 인증서의 경우 다음 명령을 실행합니다.

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

    ./my-server.crt와 같은 파일에 있는 PEM 인코딩 인증서의 경우 다음 명령을 실행합니다.

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

OPC UA 서버가 CA(인증 기관)에서 발급한 인증서를 사용하는 경우 OPC UA 신뢰할 수 있는 인증서 목록에 대한 커넥터에 해당 CA의 공개 키 인증서를 추가하여 CA를 신뢰할 수 있습니다. 이제 OPC UA 커넥터는 CA에서 발급한 유효한 인증서를 사용하는 모든 서버를 자동으로 신뢰합니다. 따라서 OPC UA 신뢰할 수 있는 인증서 목록에 대한 커넥터에 OPC UA 서버의 인증서를 명시적으로 추가할 필요가 없습니다.

CA를 신뢰하려면 다음 단계를 완료합니다.

  1. DER 또는 PEM 형식으로 CA 인증서 공개 키 인코딩을 가져옵니다. 이러한 인증서는 일반적으로 .der 또는 .crt 확장자를 가진 파일에 저장됩니다. CA의 CRL을 가져옵니다. 이 목록은 일반적으로 .crl이 있는 파일에 있습니다. 자세한 내용은 OPC UA 서버 설명서를 확인합니다.

  2. CA 인증서 및 CRL 을 aio-opc-ua-broker-trust-list Kubernetes 네이티브 비밀에 저장합니다.

    ./my-server-ca.der와 같은 파일에서 DER로 인코딩된 CA 인증서의 경우 다음 명령을 실행합니다.

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

    ./my-server-ca.crt와 같은 파일에서 PEM으로 인코딩된 CA 인증서의 경우 다음 명령을 실행합니다.

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

발급자 인증서 목록 구성

OPC UA 서버가 CA에서 발급한 인증서를 사용하지만 CA에서 발급한 모든 인증서를 신뢰하지 않으려는 경우 다음 단계를 완료합니다.

  1. 이전 섹션의 처음 세 단계를 수행하여 OPC UA 서버의 애플리케이션 인스턴스 인증서를 신뢰합니다.

  2. 인증서 자체 외에도 OPC UA용 커넥터는 OPC UA 서버 인증서의 발급자 체인의 유효성을 제대로 검사하기 위해 CA 인증서가 필요합니다. CA 인증서 및 CRL(인증서 해지 목록)을 Kubernetes 비밀로 구현된 aio-opc-ua-broker-issuer-list라는 별도의 목록에 추가합니다.

    1. CA 인증서 및 CRL을 비밀에 저장합니다 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"
      

      ./my-server-ca.crt와 같은 파일에 있는 PEM 인코딩 인증서의 경우 다음 명령을 실행합니다.

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

OPC UA 서버 구성

애플리케이션 인증 상호 신뢰 구성을 완료하려면 OPC UA 애플리케이션 인스턴스 인증서에 대한 커넥터를 신뢰하도록 OPC UA 서버를 구성해야 합니다.

  1. OPC UA 인증서용 커넥터를 opcuabroker.crt 파일에 추출하려면 다음 명령을 실행합니다.

    kubectl -n azure-iot-operations get secret aio-opc-opcuabroker-default-application-cert -o jsonpath='{.data.tls\.crt}' | base64 -d > opcuabroker.crt
    
  2. 많은 OPC UA 서버는 DER 형식의 인증서만 지원합니다. 필요한 경우 다음 명령을 사용하여 opcuabroker.crt 인증서를 opcuabroker.der로 변환합니다.

    openssl x509 -outform der -in opcuabroker.crt -out opcuabroker.der
    
  3. 서버의 신뢰할 수 있는 인증서 목록에 opcuabroker.crt 또는 opcuabroker.der 인증서 파일을 추가하는 방법을 알아보려면 OPC UA 서버 설명서를 참조하세요.

엔터프라이즈급 애플리케이션 인스턴스 인증서 구성

프로덕션 환경에서는 OPC UA 커넥터를 구성하여 엔터프라이즈급 애플리케이션 인스턴스 인증서를 사용할 수 있습니다. 일반적으로 엔터프라이즈 CA는 이 인증서를 발급하며 구성에 CA 인증서가 필요합니다. CA 계층 구조가 있고 CA의 전체 유효성 체인을 구성에 추가해야 하는 경우가 많습니다.

다음 예에서는 다음 항목을 참조하세요.

항목 설명
opcuabroker-certificate.der 엔터프라이즈급 애플리케이션 인스턴스 인증서 공개 키가 포함된 파일입니다.
opcuabroker-certificate.pem 엔터프라이즈급 애플리케이션 인스턴스 인증서 프라이빗 키가 포함된 파일입니다.
subjectName 애플리케이션 인스턴스 인증서에 포함된 주체 이름 문자열입니다.
applicationUri 애플리케이션 인스턴스에 포함된 애플리케이션 인스턴스 URI입니다.
enterprise-grade-ca-1.der 엔터프라이즈급 CA 인증서 공개 키가 포함된 파일입니다.
enterprise-grade-ca-1.crl CA의 CRL 파일입니다.

이전 예제와 마찬가지로 전용 Kubernetes 비밀을 사용하여 인증서 및 CRL을 저장합니다. 엔터프라이즈급 애플리케이션 인스턴스 인증서를 구성하려면 다음 단계를 완료합니다.

  1. 다음 명령을 사용하여 인증서 및 CRL 을 aio-opc-ua-broker-client-certificate 비밀에 저장합니다.

    # 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. CA를 사용하여 OPC UA 브로커에 대한 인증서를 발급하는 경우 aio-opc-ua-broker-issuer-list 비밀을 구성합니다. 다음과 같은 kubectl Kubernetes 클라이언트를 사용하여 엔터프라이즈 급 ca-1.derenterprise-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"
    

이제 OPC UA 커넥터가 엔터프라이즈 인증서를 사용하므로 연결해야 하는 모든 OPC UA 서버의 신뢰할 수 있는 인증서 목록에 새 인증서의 공개 키를 추가하는 것을 잊지 마세요.