Callback zur Benachrichtigung über die Erneuerung des Kanal-Tokens.
Breaking change
- Nach einer kürzlich durchgeführten Sicherheitsüberprüfung erzwingen die Https-Server-Endpunkte auf Anfrage die gegenseitige TLS-Authentifizierung und ändern das Verhalten ohne diese.
- Es wird dringend empfohlen, nur gegenseitige TLS-Authentifizierung zu verwenden. Einige Clients unterstützen das neue Schema möglicherweise noch nicht.
- Eine neue Konfigurationsvariable
<httpsmutualtls>true</httpsmutualtls> aktiviert oder deaktiviert die Unterstützung der gegenseitigen TLS-Authentifizierung (Standard: true).
Das Verhalten des https TLS Endpunktes ändert sich entsprechend der folgenden Einstellungen:
HttpsMutualTls ist true
- Der Server prüft die Vertrauenswürdigkeit des Zertifikats, das vom Client für die TLS-Authentifizierung verwendet wird. Es muss ein gültiges OPC UA Anwendungszertifikat sein, dem vertraut wird.
- Ein Client kann sich auch ohne Client-Zertifikat verbinden, kann dann aber nur Discovery Services aufrufen.
- Um eine Sitzung zu erstellen, muss der Client das gleiche Anwendungszertifikat verwenden, das für den TLS-Kanal verwendet wurde.
HttpsMutualTls ist falsch
- Es findet keine Anwendungsauthentifizierung statt. Der Server-Endpunkt verwendet die Sicherheit None und es findet keine Authentifizierung der Client-Anwendung statt.
- Stattdessen wird nur die Benutzerauthentifizierung zur Sicherung des Servers verwendet, die anonyme Benutzerauthentifizierung ist deaktiviert.
- Discovery-Dienstaufrufe werden unterstützt.
Erweiterungen
- Unterstützt native .NET 9-Assemblies. Ein neuer X509CertificateLoader wurde für ältere .NET-Versionen eingeführt, um den Code ohne ifdef lesbar zu halten.
- Server GDS Push CreateSigningRequest unterstützt die Regeneration des öffentlich/privaten Schlüsselpaares. von @romanett.
- Callback zur Benachrichtigung über die Erneuerung des Kanal-Tokens.
- Server-Erkennungsalgorithmus für Clients, die versuchen, die bekannte Basic128Rsa15-Schwachstelle auszunutzen.
Fehlerbehebungen
- Client ReadNodes löst einen BadInvalidType aus, wenn ein Wertetyp null zurückgibt.
- Client-Lesen von großen Wörterbüchern wird in Stücke aufgeteilt. von @ThomasNehring.
- Gemischte opc.https und https Endpunkte verhindern das Starten eines Servers.
- Server-Endpunkt-Zertifikate wurden nach GDS Push UpdateCertificate nicht aktualisiert. von @romanett.
- Ereignisberichte ignorieren Sitzungskontext. von @Filippo-Oliva-ABB.
- Akzeptiert Namespace Uri, die nicht gut geformt sind. Strengere Handhabung wurde in der vorherigen Version hinzugefügt, aber für IOP ist wieder gelockert.
- Das Lesen komplexer Typen von einem Server konnte eine Null-Pointer-Exception in BinaryDecoder verursachen. von @marcschier.
- Das Lesen von Operationslimits konnte eine Exception verursachen (Operationslimits wurden daher ignoriert).
- CRL mit ungültigem Inhalt konnte zu einer Exception führen, wenn Property mit Lazy Decoding gelesen wurde, CRL immer dekodieren, wenn constructore aufgerufen wird, um Probleme frühzeitig zu erkennen.
- Kanal-Token HMAC-Referenzen wurden nach einer Kanalerneuerung nicht entsorgt.
- Erlaubt die Dekodierung von Erweiterungsobjekten, die die Länge auf -1 setzen.
- Fix für CauseMappings und Fehler in ConditionRefresh/2 von @Archie-Miller
Was sich geändert hat
- Bump Serilog und System.Diagnostics.DiagnosticSource von @dependabot in #2780
- Update CauseMappings zur korrekten Unterstützung von Übergängen von @Archie-Miller #2877
- ConditionRefreshAsync führt immer zu BadNodeIdUnknown von @Archie-Miller #2876
- [Server] GDS-Push: Enable regeneratePrivatekey for CreateSigningRequest method of Server by @romanett in #2778
- Client ReadNodes, werfe BadInvalidType, wenn ein von einem Attribut zurückgegebener Werttyp null ist von @mregen in #2746
- [Client] Große Wörterbücher lesen von @ThomasNehring in #2782
- Server startet nicht mit gemischten https-Endpunkten von @mregen in #2789
- #2777 Korrektur für - MonitoredItem2.OnReportEvent ignoriert Sitzung im ISystemContext während des Benachrichtigungsprozesses von @Filippo-Oliva-ABB in #2779
- Server] Aktualisierung der Endpunktbeschreibungen nach Zertifikatsaktualisierung von @romanett in #2735
- Verschiebung des geänderten Referenzservers aus dem Unit-Test in eine eigene Datei von @ThomasNehring in #2725
- #2656 Fix für - Session wird von ClearChangeMasks nicht bereitgestellt, wenn eine Änderung gemeldet wird von @Filippo-Oliva-ABB in #2772
- Revert "#2656 Fix für - Session wird von ClearChangeMasks nicht zur Verfügung gestellt, wenn... von @mregen in #2792
- Fix ExpandedNodeId.Format Ausgabe für nicht wohlgeformte uri und JSON Verbose WriteStatusCode von @mregen in #2794
- Nullpointer-Ausnahme beim Lesen eines komplexen Typs aus umati server.... von @marcschier in #2798
- ReturnDiagnostics zum Session-Konstruktor hinzufügen von @romanett in #2810
- IOP: FetchOperationLimits für einige Anwendungsfälle korrigieren by @mregen in #2807
- Aktualisiere version.json, um Vorschau-Builds von develop zu ermöglichen von @mregen in #2813
- Behebt Fehler im JSON-Decoder von @mregen in #2828
- Aktualisiere brokerHostName bevor MqttClientOptionsBuilder dessen Wert verwendet von @mrsuciu in #2830
- Verbessern der crl-Behandlung in Zertifikatspeichern von @romanett in #2829
- Die Verwendung von Uri.TryCreate verursacht eine Regression mit Namespace Uri, die gemischte Klein-/Großbuchstaben in der Uri verwenden. by @KircMax in #2837
- KanalToken: HMAC entsorgen und Lebensdauerberechnung verbessern. von @mregen in #2846
- Minimaler Mechanismus zur Erkennung von Schurkenclients auf Transportebene hinzugefügt. by @mrsuciu in #2850
- ValidateRolePermissions für MIs, die den Wert eines Knotens überwachen, von @romanett in #2809
- [Server] ValidateRolePermissions von MonitoredItems basierend auf der gespeicherten Benutzeridentität, um eine Validierung zu ermöglichen, wenn keine Session vorhanden ist, von @romanett in #2832
- Unterstützt .NET 9.0 Build von @mregen in #2865
- Verbesserungen der Client-Performance und des Speichers für JSON-Kodierung und Abonnements von @mregen in #2864
- Callback registrieren, um über die Aktivierung eines neuen Channel-Tokens zu informieren (#2872) by @marcschier in #2873
- [Client] Fix: KeepAliveInterval wurde bei ModifySubscription nicht aktualisiert von @romanett in #2871
- Zusammenführen von Korrekturen aus master in den stabilen Zweig von @mregen in #2878
- BouncyCastle.Cryptography von 2.4.0 auf 2.5.0 erhöhen von @mregen in #2875
- Erlaube die Dekodierung von Erweiterungsobjekten für Legacy-Geräte, die die Länge nicht festlegen von @mregen in #2869
- Aktiviere gegenseitiges tls auf Server https Endpunkten von @mrsuciu in #2849
- Serialisierung von ApplicationConfiguration /CertificateTrustList reparieren von @romanett in #2879
- Zusammenführen von develop/main374 in release/1.5.374 von @mregen in #2881