Konfigurowanie infrastruktury certyfikatów OPC UA dla usługi Azure IoT OPC UA Broker (wersja zapoznawcza)
Ważne
Usługa Azure IoT Operations Preview — włączona przez usługę Azure Arc jest obecnie dostępna w wersji zapoznawczej. Nie należy używać tego oprogramowania w wersji zapoznawczej w środowiskach produkcyjnych.
Zobacz Dodatkowe warunki użytkowania wersji zapoznawczych platformy Microsoft Azure, aby zapoznać się z postanowieniami prawnymi dotyczącymi funkcji platformy Azure, które są w wersji beta lub wersji zapoznawczej albo w inny sposób nie zostały jeszcze wydane jako ogólnie dostępne.
Z tego artykułu dowiesz się, jak skonfigurować infrastrukturę certyfikatów OPC UA dla brokera usługi Azure IoT OPC UA. Ta infrastruktura zapewnia kontrolę nad tym, które serwery OPC UA w terenie są zaufane, aby bezpiecznie ustanowić sesję i zbierać dane telemetryczne dla rozwiązania. Zgodnie ze specyfikacją OPC UA broker OPC UA działa jako pojedyncza aplikacja UA, gdy ustanawia bezpieczną komunikację z serwerami OPC UA. Broker usługi Azure IoT OPC UA używa tego samego certyfikatu wystąpienia aplikacji dla wszystkich bezpiecznych kanałów między samymi serwerami OPC UA, z którymi się łączy.
Wymagania wstępne
Zainstalowano program Azure IoT Operations Preview. Aby uzyskać więcej informacji, zobacz Szybki start: wdrażanie operacji usługi Azure IoT — w klastrze Kubernetes z obsługą usługi Arc.
Obsługiwane funkcje
W poniższej tabeli przedstawiono poziom obsługi funkcji uwierzytelniania w bieżącej wersji brokera OPC UA:
Funkcje | Znaczenie | Symbol |
---|---|---|
Konfiguracja certyfikatu wystąpienia aplikacji z podpisem własnym OPC UA | Obsługiwane | ✅ |
Obsługa listy zaufanych certyfikatów OPC UA | Obsługiwane | ✅ |
Obsługa list certyfikatów wystawcy OPC UA | Obsługiwane | ✅ |
Konfiguracja certyfikatu wystąpienia aplikacji klasy korporacyjnej OPC UA | Obsługiwane | ✅ |
Obsługa niezaufanych certyfikatów OPC UA | Nieobsługiwane | ❌ |
Obsługa globalnej usługi odnajdywania OPC UA (GDS) | Nieobsługiwane | ❌ |
Konfiguracja certyfikatu wystąpienia aplikacji OPC UA z podpisem własnym
Domyślne wdrożenie brokera OPC UA instaluje wszystkie zasoby wymagane przez menedżera certyfikatów Kubernetes w celu utworzenia certyfikatu OPC UA zgodnego z podpisem własnym. Ten certyfikat jest przechowywany w kluczu tajnym aio-opc-opcuabroker-default-application-cert
kubernetes. Ten wpis tajny jest mapowany na wszystkie zasobniki kubernetes łącznika OPC UA i działa jako certyfikat wystąpienia aplikacji klienckiej OPC UA. Odnawianie certyfikatu wystąpienia aplikacji odbywa się automatycznie przez menedżera certyfikatów Kubernetes.
Ta konfiguracja jest zazwyczaj wystarczająco dobra, aby zapewnić zgodną i bezpieczną komunikację między zasobem obsługującym protokół OPC UA i brokerem OPC UA na potrzeby demonstracyjne i testowe. W celach produkcyjnych należy używać certyfikatów wystąpień aplikacji klasy korporacyjnej we wdrożeniu.
Jak obsługiwać listę zaufanych certyfikatów OPC UA
Aby nawiązać połączenie z zasobem, najpierw należy ustanowić wzajemne zaufanie uwierzytelniania aplikacji. W przypadku brokera OPC UA wykonaj następujące czynności:
Pobierz certyfikat wystąpienia aplikacji serwera OPC UA (tylko klucz publiczny) w
*.der
formacie pliku lub*.crt
.Zazwyczaj serwery OPC UA mają interfejs umożliwiający eksportowanie certyfikatu wystąpienia aplikacji. Ten interfejs nie jest ustandaryzowany. W przypadku serwerów, takich jak PTC KepWareEx, interfejs użytkownika konfiguracji opartej na systemie Windows jest dostępny do zarządzania certyfikatami. Niektóre inne serwery mają interfejs internetowy, podczas gdy inne używają niektórych folderów w systemie operacyjnym do przechowywania certyfikatów. Zapoznaj się z podręcznikiem użytkownika serwera, aby dowiedzieć się, jak wyeksportować certyfikat wystąpienia aplikacji. Po utworzeniu certyfikatu jako pliku upewnij się, że jest on w formacie *.der lub *.crt (PEM). Jeśli certyfikat nie jest w jednym z tych formatów, użyj narzędzi takich jak openssl, aby przekształcić certyfikat w wymagany format pliku *.der lub *.crt.
Wypchnij certyfikat wystąpienia aplikacji serwera OPC UA w usłudze Azure Key Vault jako wpis tajny.
W przypadku
*.der
pliku w formacie pliku ./my-server.der uruchom następujące polecenie:# Upload my-server.der OPC UA Server's certificate as secret to Azure Key Vault az keyvault secret set \ --name "my-server-der" \ --vault-name <azure-key-vault-name> \ --file ./my-server.der \ --encoding hex \ --content-type application/pkix-cert
W przypadku
*.crt
pliku certyfikatu formatu pliku (PEM) ./my-server.crt uruchom następujące polecenie:# Upload my-server.der OPC UA Server's certificate as secret to Azure Key Vault az keyvault secret set \ --name "my-server-crt" \ --vault-name <azure-key-vault-name> \ --file ./my-server.crt \ --encoding hex \ --content-type application/x-pem-file
Skonfiguruj zasób niestandardowy klasy dostawcy wpisów tajnych (SPC)
aio-opc-ua-broker-trust-list
w połączonym klastrze. Użyj klienta K8s, takiego jak kubectl, aby skonfigurować wpisy tajne (my-server-der
lubmy-server-crt
w poniższym przykładzie) w tablicy obiektów SPC w połączonym klastrze.W poniższym przykładzie przedstawiono kompletny certyfikat SPC CR zawierający zaufany certyfikat serwera OPC UA w
*.der
konfiguracji formatu pliku:apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: aio-opc-ua-broker-trust-list namespace: azure-iot-operations spec: provider: azure parameters: usePodIdentity: 'false' keyvaultName: <azure-key-vault-name> tenantId: <azure-tenant-id> objects: | array: - | objectName: my-server-der objectType: secret objectAlias: my-server.der objectEncoding: hex
W poniższym przykładzie przedstawiono kompletny certyfikat SPC CR zawierający zaufany certyfikat serwera OPC UA w
*.crt
konfiguracji formatu pliku:apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: aio-opc-ua-broker-trust-list namespace: azure-iot-operations spec: provider: azure parameters: usePodIdentity: 'false' keyvaultName: <azure-key-vault-name> tenantId: <azure-tenant-id> objects: | array: - | objectName: my-server-crt objectType: secret objectAlias: my-server.crt objectEncoding: hex
Projekcja wpisów tajnych i certyfikatów usługi Azure Key Vault w klastrze trwa trochę czasu w zależności od skonfigurowanego interwału sondowania.
Jeśli serwer OPC UA używa certyfikatu wystawionego przez urząd certyfikacji, możesz zaufać urzędowi certyfikacji, dodając certyfikat klucza publicznego do listy zaufanych certyfikatów brokera OPC UA. Dzięki temu wystąpienie brokera OPC UA automatycznie ufa wszystkim serwerom korzystającym z prawidłowego certyfikatu wystawionego przez urząd certyfikacji. W takim przypadku nie musisz jawnie dodawać certyfikatu serwera OPC UA do listy zaufanych certyfikatów brokera OPC UA.
Aby ufać urzędowi certyfikacji, wykonaj następujące kroki konfiguracji:
Pobierz klucz publiczny certyfikatu urzędu certyfikacji w
*.der
formacie pliku lub*.crt
. Pobierz listę odwołania certyfikatów urzędu certyfikacji (CRL) w*.crl
formacie pliku. Zapoznaj się z dokumentacją serwera OPC UA, aby znaleźć szczegółowe informacje.Wypchnij certyfikat urzędu certyfikacji i listę CRL w usłudze Azure Key Vault jako wpisy tajne.
W przypadku
*.der
pliku w formacie pliku ./my-server-ca.der uruchom następujące polecenie:# Upload CA certificate as secret to Azure Key Vault az keyvault secret set \ --name "my-server-ca-der" \ --vault-name <azure-key-vault-name> \ --file ./my-server-ca.der \ --encoding hex \ --content-type application/pkix-cert # Upload the CRT as secret to Azure Key Vault az keyvault secret set \ --name "my-server-crl" \ --vault-name <azure-key-vault-name> \ --file ./my-server-ca.crl \ --encoding hex \ --content-type application/pkix-crl
W przypadku
*.crt
pliku certyfikatu formatu pliku (PEM) ./my-server-ca.crt uruchom następujące polecenie:# Upload CA certificate as secret to Azure Key Vault az keyvault secret set \ --name "my-server-ca-crt" \ --vault-name <azure-key-vault-name> \ --file ./my-server-ca.crt \ --encoding hex \ --content-type application/x-pem-file # Upload the CRL as secret to Azure Key Vault az keyvault secret set \ --name "my-server-crl" \ --vault-name <azure-key-vault-name> \ --file ./my-server-ca.crl \ --encoding hex \ --content-type application/pkix-crl
Skonfiguruj zasób niestandardowy klasy dostawcy wpisów tajnych (SPC)
aio-opc-ua-broker-trust-list
w połączonym klastrze. Użyj klienta K8s, takiego jak kubectl, aby skonfigurować wpisy tajne (my-server-ca-der
lubmy-server-ca-crt
w poniższym przykładzie) w tablicy obiektów SPC w połączonym klastrze.W poniższym przykładzie przedstawiono kompletny certyfikat SPC CR zawierający zaufany certyfikat serwera OPC UA w
*.der
konfiguracji formatu pliku:apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: aio-opc-ua-broker-trust-list namespace: azure-iot-operations spec: provider: azure parameters: usePodIdentity: 'false' keyvaultName: <azure-key-vault-name> tenantId: <azure-tenant-id> objects: | array: - | objectName: my-server-ca-der objectType: secret objectAlias: my-server-ca.der objectEncoding: hex - | objectName: my-server-ca-crl objectType: secret objectAlias: my-server-ca.crl objectEncoding: hex
W poniższym przykładzie przedstawiono kompletny certyfikat SPC CR zawierający zaufany certyfikat serwera OPC UA w
*.crt
konfiguracji formatu pliku:apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: aio-opc-ua-broker-trust-list namespace: azure-iot-operations spec: provider: azure parameters: usePodIdentity: 'false' keyvaultName: <azure-key-vault-name> tenantId: <azure-tenant-id> objects: | array: - | objectName: my-server-ca-crt objectType: secret objectAlias: my-server-ca.crt objectEncoding: hex - | objectName: my-server-ca-crl objectType: secret objectAlias: my-server-ca.crl objectEncoding: hex
Projekcja wpisów tajnych i certyfikatów usługi Azure Key Vault w klastrze trwa trochę czasu w zależności od skonfigurowanego interwału sondowania.
Jak obsługiwać listę certyfikatów wystawców OPC UA
Jeśli serwer OPC UA używa certyfikatu wystawionego przez urząd certyfikacji, ale nie chcesz ufać urzędowi certyfikacji, wykonaj następujące kroki:
Ufaj certyfikatowi wystąpienia aplikacji serwera OPC UA, wykonując pierwsze trzy kroki opisane w poprzedniej sekcji.
Oprócz samego certyfikatu broker OPC UA wymaga certyfikatu urzędu certyfikacji, aby prawidłowo zweryfikować łańcuch wystawców certyfikatu serwera OPC UA. Certyfikat urzędu certyfikacji i jego plik listy CRL można dodać do oddzielnej listy o nazwie
aio-opc-ua-broker-issuer-list
.Wypchnij certyfikat urzędu certyfikacji w usłudze Azure Key Vault jako wpis tajny.
W przypadku
*.der
pliku w formacie pliku ./my-server-ca.der uruchom następujące polecenie:# Upload CA certificate as secret to Azure Key Vault az keyvault secret set \ --name "my-server-ca-der" \ --vault-name <azure-key-vault-name> \ --file ./my-server-ca.der \ --encoding hex \ --content-type application/pkix-cert # Upload the CRT as secret to Azure Key Vault az keyvault secret set \ --name "my-server-crl" \ --vault-name <azure-key-vault-name> \ --file ./my-server-ca.crl \ --encoding hex \ --content-type application/pkix-crl
W przypadku
*.crt
pliku certyfikatu formatu pliku (PEM) ./my-server-ca.crt uruchom następujące polecenie:# Upload CA certificate as secret to Azure Key Vault az keyvault secret set \ --name "my-server-ca-crt" \ --vault-name <azure-key-vault-name> \ --file ./my-server-ca.crt \ --encoding hex \ --content-type application/x-pem-file # Upload the CRL as secret to Azure Key Vault az keyvault secret set \ --name "my-server-crl" \ --vault-name <azure-key-vault-name> \ --file ./my-server-ca.crl \ --encoding hex \ --content-type application/pkix-crl
Skonfiguruj zasób niestandardowy klasy dostawcy wpisów tajnych (SPC)
aio-opc-ua-broker-issuer-list
w połączonym klastrze. Użyj klienta K8s, takiego jak kubectl, aby skonfigurować wpisy tajne (my-server-ca-der
lubmy-server-ca-crt
w poniższym przykładzie) w tablicy obiektów SPC w połączonym klastrze.W poniższym przykładzie przedstawiono kompletny certyfikat SPC CR zawierający zaufany certyfikat serwera OPC UA w
*.der
konfiguracji formatu pliku:apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: aio-opc-ua-broker-issuer-list namespace: azure-iot-operations spec: provider: azure parameters: usePodIdentity: 'false' keyvaultName: <azure-key-vault-name> tenantId: <azure-tenant-id> objects: | array: - | objectName: my-server-ca-der objectType: secret objectAlias: my-server-ca.der objectEncoding: hex - | objectName: my-server-ca-crl objectType: secret objectAlias: my-server-ca.crl objectEncoding: hex
W poniższym przykładzie przedstawiono kompletny certyfikat SPC CR zawierający zaufany certyfikat serwera OPC UA w
*.crt
konfiguracji formatu pliku:apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: aio-opc-ua-broker-issuer-list namespace: azure-iot-operations spec: provider: azure parameters: usePodIdentity: 'false' keyvaultName: <azure-key-vault-name> tenantId: <azure-tenant-id> objects: | array: - | objectName: my-server-ca-crt objectType: secret objectAlias: my-server-ca.crt objectEncoding: hex - | objectName: my-server-ca-crl objectType: secret objectAlias: my-server-ca.crl objectEncoding: hex
Projekcja wpisów tajnych i certyfikatów usługi Azure Key Vault w klastrze trwa trochę czasu w zależności od skonfigurowanego interwału sondowania.
Eksportowanie certyfikatu wystąpienia aplikacji brokera OPC UA i ustanawianie wzajemnego zaufania z serwerem OPC UA
Po zaufaniu certyfikatu serwera OPC UA należy wyodrębnić certyfikat brokera OPC UA z wpisu tajnego kubernetes i dodać go do listy zaufanych certyfikatów serwera OPC UA.
Wyodrębnij certyfikat brokera OPC UA do
opcuabroker.crt
pliku:kubectl -n azure-iot-operations get secret aio-opc-opcuabroker-default-application-cert -o jsonpath='{.data.tls\.crt}' | base64 -d > opcuabroker.crt
W programie PowerShell można wykonać to samo zadanie za pomocą następującego polecenia:
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
Wiele serwerów OPC UA obsługuje tylko certyfikaty w
*.der
formacie pliku. W razie potrzeby użyj następującego polecenia, aby przekonwertować wyodrębnionyopcuabroker.crt
certyfikat naopcuabroker.der
:openssl x509 -outform der -in opcuabroker.crt -out opcuabroker.der
Zapoznaj się z dokumentacją serwera OPC UA i dodaj
opcuabroker.crt
plik oropcuabroker.der
do zaufanych certyfikatów.
Konfigurowanie certyfikatu wystąpienia aplikacji klasy korporacyjnej OPC UA
W środowiskach produkcyjnych można skonfigurować brokerA OPC UA do używania certyfikatu wystąpienia aplikacji klasy korporacyjnej. Zazwyczaj urząd certyfikacji przedsiębiorstwa wystawia ten certyfikat, dlatego potrzebny jest certyfikat urzędu certyfikacji w konfiguracji. Często jest zaangażowana hierarchia urzędów certyfikacji. Potrzebny jest pełny łańcuch weryfikacji urzędów certyfikacji dla konfiguracji.
Następujące przykłady kodu odwołują się do następujących elementów:
opcuabroker-certificate.der
— certyfikat klucza publicznego pliku certyfikatu wystąpienia aplikacji klasy korporacyjnejopcuabroker-certificate.pem
— certyfikat klucza prywatnego pliku certyfikatu wystąpienia aplikacji klasy korporacyjnejsubjectName
— nazwa podmiotu osadzona w certyfikacie wystąpienia aplikacji w formacie ciągu. Wartość domyślna to: "CN=aio-opc-opcuabroker". Najlepiej, aby certyfikat klasy korporacyjnej był już generowany z domyślną nazwą podmiotuapplicationUri
— identyfikator URI wystąpienia aplikacji osadzony w certyfikacie wystąpienia aplikacji. Wartość domyślna to: "urn:microsoft.com:aio:opc:opcuabroker". Najlepiej, aby certyfikat klasy korporacyjnej był już generowany przy użyciu domyślnego identyfikatora URI aplikacji.enterprise-grade-ca-1.der
— certyfikat klucza publicznego pliku urzędu certyfikacji klasy korporacyjnejenterprise-grade-ca-1.crl
— plik listy odwołania certyfikatów urzędu certyfikacji (CRL)
W celu skonfigurowania certyfikatu wystąpienia aplikacji klasy korporacyjnej usługa Azure Key Vault i mechanizm CSI / secrets provider class (CSP) służy do projekcji certyfikatów w klastrze kubernetes.
Aby skonfigurować certyfikat wystąpienia aplikacji klasy korporacyjnej, wykonaj następujące kroki.
Wypchnij wszystkie certyfikaty i do usługi Azure Key Vault przy użyciu następujących poleceń:
# Upload OPC UA Broker public key certificate as secret to Azure Key Vault az keyvault secret set \ --name "opcuabroker-certificate-der" \ --vault-name <azure-key-vault-name> \ --file ./opcuabroker-certificate.der \ --encoding hex \ --content-type application/pkix-cert # Upload OPC UA Broker private key certificate as secret to Azure Key Vault az keyvault secret set \ --name "opcuabroker-certificate-pem" \ --vault-name <azure-key-vault-name> \ --file ./opcuabroker-certificate.pem \ --encoding hex \ --content-type application/x-pem-file # Upload CA public key certificate as secret to Azure Key Vault az keyvault secret set \ --name "enterprise-grade-ca-1-der" \ --vault-name <azure-key-vault-name> \ --file ./enterprise-grade-ca-1.der \ --encoding hex \ --content-type application/pkix-cert # Upload CA certificate revocation list as secret to Azure Key Vault az keyvault secret set \ --name "enterprise-grade-ca-1-crl" \ --vault-name <azure-key-vault-name> \ --file ./enterprise-grade-ca-1.crl \ --encoding hex \ --content-type application/pkix-crl
Skonfiguruj zasób niestandardowy klasy
aio-opc-ua-broker-client-certificate
dostawcy wpisów tajnych (CR) w połączonym klastrze. Użyj klienta K8s, takiego jak kubectl, aby skonfigurować wpisyopcuabroker-certificate-der
tajne iopcuabroker-certificate-pem
w tablicy obiektów SPC w połączonym klastrze.W poniższym przykładzie pokazano kompletny crC SPC po dodaniu konfiguracji wpisów tajnych:
apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: aio-opc-ua-broker-client-certificate namespace: azure-iot-operations spec: provider: azure parameters: usePodIdentity: 'false' keyvaultName: <azure-key-vault-name> tenantId: <azure-tenant-id> objects: | array: - | objectName: opcuabroker-certificate-der objectType: secret objectAlias: opcuabroker-certificate.der objectEncoding: hex - | objectName: opcuabroker-certificate-pem objectType: secret objectAlias: opcuabroker-certificate.pem objectEncoding: hex
Jeśli używasz urzędu certyfikacji, skonfiguruj niestandardowy zasób klasy
aio-opc-ua-broker-issuer-list
dostawcy wpisów tajnych (CR) w połączonym klastrze. Użyj klienta K8s, takiego jak kubectl, aby skonfigurować wpisyenterprise-grade-ca-1-der
tajne ienterprise-grade-ca-1-crl
w tablicy obiektów SPC w połączonym klastrze.W poniższym przykładzie pokazano kompletny crC SPC po dodaniu konfiguracji wpisów tajnych:
apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: aio-opc-ua-broker-issuer-list namespace: azure-iot-operations spec: provider: azure parameters: usePodIdentity: 'false' keyvaultName: <azure-key-vault-name> tenantId: <azure-tenant-id> objects: | array: - | objectName: enterprise-grade-ca-1-der objectType: secret objectAlias: enterprise-grade-ca-1.der objectEncoding: hex - | objectName: enterprise-grade-ca-1-crl objectType: secret objectAlias: enterprise-grade-ca-1.crl objectEncoding: hex
Zaktualizuj wdrożenie brokera OPC UA, aby użyć nowego źródła CPS dla certyfikatów wystąpień aplikacji przy użyciu następującego polecenia:
az k8s-extension update \ --version 0.3.0-preview \ --name opc-ua-broker \ --release-train preview \ --cluster-name <cluster-name> \ --resource-group <azure-resource-group> \ --cluster-type connectedClusters \ --auto-upgrade-minor-version false \ --config securityPki.applicationCert=aio-opc-ua-broker-client-certificate \ --config securityPki.subjectName=<subjectName> \ --config securityPki.applicationUri=<applicationUri>
Teraz, gdy certyfikat przedsiębiorstwa jest używany przez brokera OPC UA, nie zapomnij dodać nowego klucza publicznego certyfikatu na liście zaufanych certyfikatów wszystkich serwerów OPC UA, z którymi należy nawiązać połączenie.