TsgcWebSocketClient | Certyfikaty SChannel

Jeśli serwer wymaga, aby klient łączył się przy użyciu certyfikatu SSL, należy użyć właściwości TLSOptions komponentu TsgcWebSocketClient do ustawienia plików certyfikatu.

 

Połączenie przez SChannel wymaga ustawienia TLSOptions.IOHandler = iohSChannel.

 

SChannel obsługuje 2 rodzaje uwierzytelniania certyfikatami:

 

1. Używanie certyfikatu PFX

2. Ustawienie skrótu certyfikatu dla certyfikatu już zainstalowanego w systemie Windows.

 

Certyfikat PFX

Certyfikat PFX to plik zawierający certyfikat i klucz prywatny. Jeśli certyfikat jest w formacie PEM, przed użyciem należy go przekonwertować na format PFX.

Użyj poniższego polecenia openssl, aby przekonwertować certyfikat PEM na format PFX

 


openssl pkcs12 -inkey certificate-pem.key -in certificate-pem.crt -export -out certificate.pfx

Po przekonwertowaniu certyfikatu do formatu PFX wystarczy wdrożyć certyfikat i ustawić właściwość TLSOptions.CertFile na jego ścieżkę.

 


TLSOptions.IOHandler = iohSChannel
TLSOptions.CertFile = <certificate path>
TLSOptions.Password = <certificate optional password>

 

Certyfikat Hash

Jeśli certyfikat jest już zainstalowany w magazynie certyfikatów systemu Windows, wystarczy znać odcisk palca certyfikatu i ustawić go we właściwości TLSOptions.SChannel_Options.

 

Znalezienie skrótu certyfikatu w PowerShell jest tak proste, jak uruchomienie polecenia dir na kontenerze certyfikatów.

dir cert:\localmachine\my

Skrót jest szesnastkową wartością Thumbprint.


Directory: Microsoft.PowerShell.Security\Certificate::localmachine\my
Thumbprint                                Subject
----------                                -------
C12A8FC8AE668F866B48F23E753C93D357E9BE10  CN=*.mydomain.com

Po uzyskaniu wartości Thumbprint należy ustawić hash oraz lokalizację certyfikatu we właściwości TLSOptions.SChannel_Options.


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>