SSL-gesicherte Webservices mit PowerShell aufrufen – auch wenn die Zertifikatsprüfung fehlschlägt

Der Dotnet-Doktor  –  0 Kommentare

Beim Aufruf eines SSL-gesicherten Webservice beschwert sich die PowerShell, wenn die Zertifikatsprüfung nicht erfolgreich war. Mit diesem Trick kann man zu Testzwecken die Prüfung ausschalten.

Mit der Windows PowerShell kann man sehr einfach SOAP-Webservices nutzen. Das Commandlet New-WebServiceProxy erstellt auf Basis einer WSDL-Datei (oder eines WSDL-Endpunkts) einen Client-Proxy, auf dem man dann die Operationen aufrufen kann.

Ein Beispiel:

$proxy = New-WebServiceProxy "https://meinServer/MeinDienst.svc"
-UseDefaultCredential
$proxy.Operation(1, 2, 3, ...)

Wenn nun aber das Zertifikat eines SSL-gesicherten Webservice nicht erfolgreich geprüft werden kann (z. B. weil das Zertifikat der Zertifizierungsstelle fehlt), dann verweigert New-WebServiceProxy natürlich die Arbeit: "The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel."

Zu Testzwecken möchte man aber den Webservice vielleicht dennoch aufrufen. Das ist möglich, indem man die Zertifikatsprüfung vor dem Aufruf von New-WebServiceProxy ausschaltet :

[System.Net.ServicePointManager]::ServerCertificateValidationCallback 
= {$true}

Aber das bitte wirklich nur so ausführen, wenn man sicher ist, dass man wirklich mit dem gewünschten Webservice redet, dem man vertraut. Es besteht die Gefahr eines "Man-in-the-middle"-Angriffs!