この記事では、OPC UA 用コネクタ用に OPC UA 証明書インフラストラクチャを構成する方法について説明します。 この構成により、安全にセッションを確立するための信頼できる OPC UA サーバーを決定できます。
OPC UA 用コネクタは、OPC UA サーバーとの間にセキュリティで保護された通信を確立するときに、OPC UA 仕様に基づいて単一の OPC UA アプリケーションとして機能します。 OPC UA 用コネクタは、それが OPC UA サーバーに対して開いた、セキュリティで保護されたすべてのチャネルについて、同じクライアント証明書を使用します。
OPC UA 用コネクタは、接続先の OPC UA サーバーを信頼する必要があります。 コネクタは、信頼された証明書の一覧を保持します。 詳細については、以下をご覧ください。
- Azure IoT Operations デプロイの証明書を管理する - この記事では、Azure IoT Operations が Azure Key Vault を使用して証明書を管理する方法について説明します。
- OPC UA 用コネクタの OPC UA 証明書インフラストラクチャ - この記事では、信頼された証明書の一覧と発行者の証明書の一覧の役割について説明します。
前提条件
- セキュリティ保護設定を使用してデプロイされた Azure IoT Operations インスタンス。 テスト設定を使用して Azure IoT Operations をデプロイした場合は、最初に セキュリティで保護された設定を有効にする必要があります。
OPC UA 用コネクタの自己署名アプリケーション インスタンス証明書を構成する
OPC UA 用コネクタの既定のデプロイでは、cert-manager が必要とするすべてのリソースがインストールされ、OPC UA 準拠の自己署名証明書が作成されます。 この証明書は aio-opc-opcuabroker-default-application-cert
シークレットに格納されます。 このシークレットは、すべての OPC UA 用コネクタ ポッドにマップされ、OPC UA クライアントのアプリケーション インスタンス証明書として機能します。
cert-manager
は、このアプリケーション インスタンス証明書の自動更新を処理します。
デモ環境や調査環境で、OPC UA サーバーと OPC UA 用コネクタとの間で規制に準拠しセキュリティで保護された通信を行うには、この構成で通常十分です。 運用環境の場合は、デプロイで エンタープライズ グレードのアプリケーション インスタンス証明書 を使用します。
信頼できる証明書の一覧を構成する
OPC UA サーバーに接続するには、まず、アプリケーション認証の相互信頼を確立する必要があります。 OPC UA のコネクタが接続するサーバーの信頼できる証明書の一覧を構成するには:
操作エクスペリエンス Web UI を使用して信頼された証明書の一覧を管理するには、次の手順を実行します。
OPC UA サーバー アプリケーションのインスタンス証明書をファイルとして取得します。 通常、これらのファイルには
.der
または.crt
拡張子があります。 このファイルには公開キーのみが含まれています。ヒント
通常、OPC UA サーバーには、アプリケーション インスタンス証明書をエクスポートできるインターフェイスがあります。 このインターフェイスは標準化されていません。 KEPServerEx などのサーバーでは、証明書を管理するための Windows ベースの構成 UI があります。 他のサーバーは、Web インターフェイスがある場合や、オペレーティング システム フォルダーを使用して証明書を格納する場合があります。 アプリケーション インスタンス証明書をエクスポートする方法については、サーバーのユーザー マニュアルを参照してください。 証明書を取得したら、それが DER または PEM でエンコードされていることを確認してください。 これらの証明書は、通常、
.der
または.crt
拡張子を持つファイルに格納されます。 証明書がこれらのファイル形式でない場合は、openssl
などのツールを使用して、証明書を必要な形式に変換します。証明書をシークレットとして Azure Key Vault に直接追加してそこからインポートすることも、操作エクスペリエンスを使用して信頼できる証明書の一覧に証明書をアップロードすることもできます。
注
OPC UA 用コネクタは、 aio-opc-ua-broker-trust-list という名前の Kubernetes ネイティブ シークレットを使用して、信頼された証明書の一覧を格納します。 このシークレットは、Azure IoT Operations をデプロイするときに作成されます。
操作エクスペリエンス Web UI の [資産エンドポイント] ページに移動します。
信頼できる証明書の一覧を表示するには、[ 証明書とシークレットの管理 ] を選択し、[ 証明書] を選択します。
ローカル コンピューターから証明書ファイルをアップロードするか、以前にシークレットとして追加した証明書ファイルを Azure Key Vault に追加できます。
適用を選択して、変更を保存します。 これで、証明書が信頼された証明書の一覧に追加されます。 証明書をアップロードすると、シークレットとして Azure Key Vault に自動的に追加されます。
OPC UA サーバーが証明機関 (CA) によって発行された証明書を使用している場合は、その公開キー証明書を信頼された証明書の一覧に追加することで、CA を信頼できます。 これで、OPC UA 用コネクタ インスタンスが、その CA によって発行された有効な証明書を使用するすべてのサーバーを自動的に信頼するようになります。 そのため、OPC UA サーバーの証明書を OPC UA 用コネクタの信頼できる証明書の一覧に明示的に追加する必要はありません。 現時点では、操作エクスペリエンスを使用して、信頼された証明書の一覧に証明書失効リストを追加することはできません。
ヒント
操作エクスペリエンスに新しい証明書を追加するには、Azure Key Vault の Key Vault Secrets Officer ロールに割り当てられている必要があります。
Von Bedeutung
Azure Key Vault から証明書を追加する場合は、証明書としてではなくシークレットとして保存する必要があります。
発行者証明書の一覧を構成する
OPC UA サーバーが CA によって発行された証明書を使用しているが、CA によって発行されたすべての証明書を信頼したくない場合は、発行者証明書の一覧を構成します。
中間証明書を使用して発行者証明書の一覧を構成する前に、CA 証明書を信頼された証明書の一覧に追加する必要があります。 OPC UA 用コネクタは、CA 証明書を使用して、OPC UA サーバーの証明書の発行者チェーンを検証します。
操作エクスペリエンス Web UI を使用して発行者証明書の一覧を管理するには、次の手順を実行します。
サーバー インスタンス証明書にファイルとして署名するために使用された発行者証明書を取得します。 通常、これらのファイルには
.der
または.crt
拡張子があります。 このファイルには公開キーのみが含まれています。 発行者証明書の .crl ファイル (証明書失効リスト) がある場合もあります。発行者証明書をシークレットとして Azure Key Vault に直接追加してそこからインポートするか、操作エクスペリエンスを使用して証明書と証明書失効リスト (.crl ファイル) を発行者証明書一覧にアップロードできます。
注
OPC UA 用コネクタは、 aio-opc-ua-broker-issuer-list という名前の Kubernetes ネイティブ シークレットを使用して、発行者証明書リストを格納します。 このシークレットは、Azure IoT Operations をデプロイするときに作成されます。
操作エクスペリエンス Web UI の [資産エンドポイント] ページに移動します。
発行者の証明書の一覧を表示するには、[ 証明書とシークレットの管理 ] を選択し、[ 証明書] を選択します。
ローカル コンピューターから発行者証明書ファイルをアップロードするか、以前にシークレットとして Azure Key Vault に追加した証明書ファイルを追加できます。
適用を選択して、変更を保存します。 これで、証明書が発行者の証明書の一覧に追加されます。 証明書をアップロードすると、シークレットとして Azure Key Vault に自動的に追加されます。
操作エクスペリエンスを使用して、信頼された証明書の一覧に証明書失効リスト (.crl ファイル) を追加することもできます。
ヒント
操作エクスペリエンスに新しい証明書を追加するには、Azure Key Vault の Key Vault Secrets Officer ロールに割り当てられている必要があります。
Von Bedeutung
Azure Key Vault から証明書を追加する場合は、証明書としてではなくシークレットとして保存する必要があります。
OPC UA サーバーを構成する
アプリケーション認証の相互信頼の構成を完了するには、OPC UA サーバーが OPC UA 用コネクタのアプリケーション インスタンス証明書を信頼するように構成する必要があります。
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
kubectl -n azure-iot-operations get secret aio-opc-opcuabroker-default-application-cert -o jsonpath='{.data.tls\.crt}' | %{ [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($_)) } > opcuabroker.crt
多くの OPC UA サーバーでは、DER 形式の証明書のみがサポートされています。 必要に応じて、次のコマンドを使用して opcuabroker.crt 証明書を opcuabroker.der に変換します。
openssl x509 -outform der -in opcuabroker.crt -out opcuabroker.der
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 を格納します。 エンタープライズ グレードのアプリケーション インスタンス証明書を構成するには、次の手順を実行します。
次のコマンドを使用して、証明書と 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>
CA を使用して OPC UA ブローカーの証明書を発行する場合は、aio-opc-ua-broker-issuer-list シークレットを構成します。
kubectl
などの Kubernetes クライアントを使用して、enterprise-grade-ca-1.der シークレットと 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"
これで、OPC UA 用コネクタがエンタープライズ証明書を使用するようになったので、それが接続する必要があるすべての OPC UA サーバーの信頼できる証明書リストに新しい証明書の公開キーを追加することを忘れないでください。