Laden...

Für den geschützten SSL/TLS-Kanal konnte keine Vertrauensstellung hergestellt werden

Erstellt von fungi35 vor 6 Jahren Letzter Beitrag vor 6 Jahren 27.296 Views
F
fungi35 Themenstarter:in
42 Beiträge seit 2015
vor 6 Jahren
Für den geschützten SSL/TLS-Kanal konnte keine Vertrauensstellung hergestellt werden

Hallo Leute,

ich habe die Aufgabe den Webservice (WSDL) eines Fremdanbieters anzusprechen (momentan noch die Test-Version die der Anbieter bereitstellt). Dabei bekomme ich immer die Meldung:

Fehlermeldung:
Die zugrunde liegende Verbindung wurde geschlossen: Für den geschützten SSL/TLS-Kanal konnte keine Vertrauensstellung hergestellt werden.

Daraufhin habe ich das ganze ohne SSL versucht:

            System.Net.ServicePointManager.ServerCertificateValidationCallback +=
            delegate (object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors sslError)
            {
                bool validationResult = true;
                return validationResult;
            };

Dann geht das System auf die http-Adresse, die es leider aber nicht gibt. Gibt es eine Möglichkeit diesen Fehler zu umgehen?

Gruß fungi35

286 Beiträge seit 2011
vor 6 Jahren

Verwendet der Service ein Zertifikat von einer offiziellen Authority oder ist das selber signiert?
Du kannst versuchen das Zertifikat bei dir zu installieren und als vertrauenswürdig zu akzeptieren.

Dann geht das System auf die http-Adresse, die es leider aber nicht gibt. Gibt es eine Möglichkeit diesen Fehler zu umgehen?

Ob HTTP geliefert wird hat nix mit SSL an oder aus zu tun. Der Server liefert dir HTTP und/oder HTTPS. Durch deaktivieren von SSL schaltest du nicht automatisch auf HTTP um, der Server muss so konfiguriert sein, dass er auch HTTP-Verbindungen unterstützt, was aber i.d.R. keine gute Idee ist, da unsicher.

Beste Grüße
emuuu

2+2=5( (für extrem große Werte von 2)

F
fungi35 Themenstarter:in
42 Beiträge seit 2015
vor 6 Jahren

Komme ich irgendwie an das Zertifikat oder muss ich dafür den Anbieter kontaktieren?

286 Beiträge seit 2011
vor 6 Jahren

Ja. Wie es geht hängt von deinem Browser ab.

Chrome:
Klick auf das Schloss neben Adresse in der Browserleiste. Hier steht normalerweise "sicher" bei einem selbstsignierten Zertifikat eher nicht.
Dann auf den "Zertifikat" klicken (bzw. auf das "Gültig" darunter). Dann im Zertifikat-Dialog den Reiter "Details öffnen und auf "In Datei kopieren".
Schon hast das Zertifikat. Dann die Datei öffnen und das Zertifikat installieren. Je nachdem ob du es für den Benutzer oder Computer installiert hast, vertraut der Benutzer/Computer dem Zertifikat nun.

Sollte auf keinen Fall als Dauerlösung verwendet werden.

2+2=5( (für extrem große Werte von 2)

F
fungi35 Themenstarter:in
42 Beiträge seit 2015
vor 6 Jahren

Danke, ich habe das Zertifikat heruntergeladen und auf meinem PC installiert (für meinen lokalen Computer). Komischerweise kommt die Meldung trotzdem noch. Sehr seltsam 🤔

Edit: Die InnerException zeigt die Meldung "Das Remotezertifikat ist laut Validierungsverfahren ungültig." an.

Edit 2: Den Virenscanner (ESET) hab' ich auch komplett ausgeschaltet, der hat auch eine SSL-Prüfung. Bringt leider auch nichts.

16.792 Beiträge seit 2008
vor 6 Jahren

Genau für diese Fehlermeldung ist der Code von Dir oben aber eigentlich die Lösung als sehr schmutziger Hack.
Dieser Hack (es ist kein fix!) hat aber nichts mit "ohne ssl" zutun. Der Hack ist einfach dazu da, dass er JEDES Zertifikat erlaubt.
Es wird aber trotzdem SSL verwendet.

Da dies ein globales Verhalten ist - und man sollte global nicht jedem Zertifikat vertrauen - ist dies prinzipiell nicht zu empfehlen.
Besser wäre certificate pinning, sprich Du überprüfst ob das Zertifikat auch wirklich das ist, was Du erwartest; das kann auch ein selbst signiertes sein.
Kerry Lothrop hat dieses Prinzip auf der Technical Summit 2016 auf Basis von Xamarin gezeigt.
Xamarin, aber sicher!

F
fungi35 Themenstarter:in
42 Beiträge seit 2015
vor 6 Jahren

Der Code oben funktioniert (auch) nicht bzw. er bewirkt nicht, dass das Zertifikat akzeptiert wird.

Das CAPI2-Log spuckt folgenden Fehler aus:

Fehlermeldung:

  • System

    • Provider

    [ Name] Microsoft-Windows-CAPI2
    [ Guid] {5bbca4a8-b209-48dc-a8c7-b23d3e5216fb}

    EventID 11

    Version 0

    Level 2

    Task 11

    Opcode 2

    Keywords 0x4000000000000003

    • TimeCreated

    [ SystemTime] 2018-02-12T20:01:26.031218800Z

    EventRecordID 2688

    Correlation

    • Execution

    [ ProcessID] 14476
    [ ThreadID] 16288

    Channel Microsoft-Windows-CAPI2/Operational

    Computer mypc

    • Security

    [ UserID] S-1-5-21-849391721-3056917416-2997542074-1011

  • UserData

    • CertGetCertificateChain

    • Certificate

    [ fileRef] 3681981CCE42123211DFF2B1FCA102B01901BB5A.cer
    [ subjectName] My Company Ltd

    ValidationTime 2018-02-12T20:01:26.031Z

    • AdditionalStore

    • Certificate

    [ fileRef] 3681981CCE42123211DFF2B1FCA102B01901BB5A.cer
    [ subjectName] My Company Ltd

    • ExtendedKeyUsage

    • Usage

    [ oid] 1.3.6.1.5.5.7.3.1
    [ name] Serverauthentifizierung

    • Flags

    [ value] 0

    • ChainEngineInfo

    [ context] user

    • CertificateChain

    [ chainRef] {33CF4FEB-7DDD-4841-9187-DDB12366B2D5}

    • TrustStatus

    • ErrorStatus

    [ value] 20
    [ CERT_TRUST_IS_UNTRUSTED_ROOT] true

    • InfoStatus

    [ value] 100
    [ CERT_TRUST_HAS_PREFERRED_ISSUER] true

    • ChainElement

    • Certificate

    [ fileRef] 3681981CCE42123211DFF2B1FCA102B01901BB5A.cer
    [ subjectName] My Company Ltd

    • SignatureAlgorithm

    [ oid] 1.2.840.113549.1.1.5
    [ hashName] SHA1
    [ publicKeyName] RSA

    • PublicKeyAlgorithm

    [ oid] 1.2.840.113549.1.1.1
    [ publicKeyName] RSA
    [ publicKeyLength] 1024

    • TrustStatus

    • ErrorStatus

    [ value] 20
    [ CERT_TRUST_IS_UNTRUSTED_ROOT] true

    • InfoStatus

    [ value] 10C
    [ CERT_TRUST_HAS_NAME_MATCH_ISSUER] true
    [ CERT_TRUST_IS_SELF_SIGNED] true
    [ CERT_TRUST_HAS_PREFERRED_ISSUER] true

    • ApplicationUsage

    [ any] true

    • IssuanceUsage

    [ any] true

    • EventAuxInfo

    [ ProcessName] xxxxxxxxx.exe

    • CorrelationAuxInfo

    [ TaskId] {D35E6EC8-9382-445D-9FD0-7811CE47DC86}
    [ SeqNumber] 3

    • Result Eine Zertifikatkette wurde zwar verarbeitet, endete jedoch mit einem Stammzertifikat, das beim Vertrauensanbieter nicht als vertrauenswürdig gilt.

    [ value] 800B0109

Ausgestellt wurde das Zertifikat von thawte, deren Rootzertifikate ich gerade alle mal installiert habe (auch ohne Erfolg)