Sonstiges Error received from remote host: [80130000] (BadSecurityChecksFailed)

DB Rangierlok

Level-1
Beiträge
1
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Community,

wir nutzen aktuell den OPC Server der SIMATIC NET PC Software in der Version 17 und möchten auf Version 21 upgraden. Das setzt vorraus, dass unser OPC Client ab sofort verschlüsselt mit unserem OPC kommuniziert, was derweil noch nicht möglich ist. Beim Umrüsten vom besagten Client bin ich an den Punkt angelangt, wo ich nicht mehr weiter weiß, weil egal wie ich es anstelle, der (so wie ich das lese) OPC verweigert die Verbindung unserer C# Anwendung mit der Fehlermeldung
ServiceResultException: [80130000] (BadSecurityChecksFailed) 'Error received from remote host: [80130000] (BadSecurityChecksFailed)'
Bevor ich in unserem V17 OPC jedoch die Verschlüsselung erzwungen hatte, ging noch alles. Also grundsätzlich funktioniert die OPC Kommunikation.

Der Client
Unser Client ist in C# 7 + .Net Framework 4.8 geschrieben und versorgt Endgeräte mit Live-Daten von verbundenen SPS. Wir nutzen für die OPC Kommunikation das Paket OPCFoundation.NetStandard.Opc.Ua.Client und verwenden das S7 Protokoll. Hier eine zusammengefasste Version unseres Verbindungsaufbaus:
C#:
private void InitServerSession()
{
    var cert = new X509Certificate2(Path.GetFullPath(@"UserCertificates\opc-client.pfx"));
   
    SecurityConfiguration scon = new SecurityConfiguration()
    {
        ApplicationCertificate = new CertificateIdentifier(cert),
        TrustedPeerCertificates = new CertificateTrustList()
        {
            StoreType = CertificateStoreType.Directory,
            StorePath = Path.GetFullPath(@"TrustedPeerCertificates")
        },
        TrustedIssuerCertificates = new CertificateTrustList()
        {
            StoreType = CertificateStoreType.Directory,
            StorePath = Path.GetFullPath(@"TrustedIssuerCertificates")
        },
        RejectedCertificateStore = new CertificateTrustList()
        {
            StoreType = CertificateStoreType.Directory,
            StorePath = Path.GetFullPath(@"RejectedCertificates")
        },
        AutoAcceptUntrustedCertificates = true,
       
    };

    ApplicationConfiguration config = new ApplicationConfiguration()
    {
        ApplicationName = _config.ApplicationName,
        ApplicationUri = _config.ApplicationUri,
        ApplicationType = ApplicationType.Client,
        SecurityConfiguration = (_config.Encryption.Enabled) ? scon : null,
        ClientConfiguration = new ClientConfiguration()
        {
            DefaultSessionTimeout = 600000
        }
    };
    config.CertificateValidator.CertificateValidation += (sender, e) => { e.Accept = true; };

    config.Validate(ApplicationType.Client).Wait();

    var endpointDescription = CoreClientUtils.SelectEndpointAsync(
        config,
        $"opc.tcp://{_config.IP}:{_config.Port}",
        _config.Encryption.Enabled,
        15000,
        null,
        _cts.Token).Result;
    var endpointConfig = EndpointConfiguration.Create(config);
    var endpoint = new ConfiguredEndpoint(null, endpointDescription, endpointConfig);

    DefaultSessionFactory factory = new DefaultSessionFactory(default);
    _session = (Session)factory.CreateAsync(
        config,
        endpoint,
        false,
        true,
        config.ApplicationName,
        60000,
        null,
        null,
        _cts.Token).Result;
}

Konfiguration unseres OPC Servers
Das zeigt die "OPC UA certificates" Seite:
1779373423293.png
So sieht die "OPC protocol selection" bei uns aus. Alle roten "X" sind Option, die wir explizit deaktiviert haben, um eine verschlüsselte Verbindung zu erzwingen.
1779373676286.png

Zertifikate
Ich habe mehrere Methoden genutzt, um ein Zertifikat zu erstellen, weil ich immer noch glaube, dass unser Problem am Zertifikat selbst liegt. Beide Methoden haben aber leider nichts gebracht.

Variante 1: WinCC Unified Certificate Manager
So sieht unsere Konfig des "Allgemeines Zertifikat" aus:
1779374761299.png
1779374921398.png
Dann habe ich das Zertifikat einmal als .pfx Datei im PEM Format und zum anderen als eine .der Datei exportiert. Die .der habe ich dann in den "Siemens Communication Settings" bei "OPC UA Certificates" als OPC UA client certificate importiert und zum anderen in unserem Client, wie auch im Beispiel Code gezeigt, die .pfx geladen. Wenn ich dann die Verbindung aufbauen möchte, kommt der oben genannte Fehler.

Variante 2: XCA
Für diese Variante habe ich hauptsächlich diese Anleitung von SIEMENS verwendet. Nur wusste ich nicht, was ich hier angeben soll,
1779375683597.png
, da in neueren XCA Versionen diese Option umgebaut wurde. Ich habe das Zertifikat dann als .pfx und als .crt exportiert und die .crt dann in .der umbenannt und dann wie in Variante 1 an beiden Stellen eingebunden. Selbe Fehlermeldung.

Ich bin echt ratlos was ich alles falsch gemacht habe und wende mich deswegen hier ans Forum. Vielen Dank schon einmal alleine schon für das lesen dieses Posts.

Gruß
Leon aka Rangierlok
 

Anhänge

  • 1779374728665.png
    1779374728665.png
    20,7 KB · Aufrufe: 3
  • 1779374731646.png
    1779374731646.png
    20,7 KB · Aufrufe: 1
Zuletzt bearbeitet:
Zurück
Oben