Wenn der Server verlangt, dass sich der Client mit einem SSL-Zertifikat verbindet, verwenden Sie die TLSOptions-Eigenschaft von TsgcWebSocketClient, um die Zertifikatsdateien festzulegen.
Die Verbindung über SChannel erfordert, dass TLSOptions.IOHandler = iohSChannel.
SChannel unterstützt 2 Arten der Zertifikatsauthentifizierung:
1. Verwendung eines PFX-Zertifikats
2. Setzen des Hash-Zertifikats eines bereits im Windows-System installierten Zertifikats.
Das PFX-Zertifikat ist eine Datei, die das Zertifikat und den privaten Schlüssel enthält. Manchmal haben Sie ein Zertifikat im PEM-Format, sodass Sie es vor der Verwendung in PFX konvertieren müssen.
Verwenden Sie den folgenden openssl-Befehl, um ein PEM-Zertifikat in PFX zu konvertieren
openssl pkcs12 -inkey certificate-pem.key -in certificate-pem.crt -export -out certificate.pfx
Sobald das Zertifikat im PFX-Format vorliegt, müssen Sie nur noch das Zertifikat bereitstellen und die Eigenschaft TLSOptions.CertFile auf seinen Pfad setzen.
TLSOptions.IOHandler = iohSChannel
TLSOptions.CertFile = <certificate path>
TLSOptions.Password = <certificate optional password>
Wenn das Zertifikat bereits im Windows-Zertifikatspeicher installiert ist, müssen Sie nur den Zertifikat-Thumbprint kennen und ihn in der Eigenschaft TLSOptions.SChannel_Options festlegen.
Den Hash eines Zertifikats zu finden ist in powershell so einfach wie das Ausführen eines dir-Befehls auf dem Zertifikatcontainer.
dir cert:\localmachine\my
Der Hash ist der hexadezimale Thumbprint-Wert.
Directory: Microsoft.PowerShell.Security\Certificate::localmachine\my
Thumbprint Subject
---------- -------
C12A8FC8AE668F866B48F23E753C93D357E9BE10 CN=*.mydomain.com
Sobald Sie den Thumbprint-Wert haben, müssen Sie den Hash und den Zertifikatsspeicherort in der Eigenschaft TLSOptions.SChannel_Options festlegen.
TLSOptions.IOHandler = iohSChannel
TLSOptions.SChannel_Options.CertHash = <certificate thumbprint>
TLSOptions.SChannel_Options.CertStoreName = <certificate store name>
TLSOptions.SChannel_Options.CertStorePath = <certificate store path>
TLSOptions.Password = <certificate optional password>