Quando o servidor exige que o cliente conecte usando um Certificado SSL, use a propriedade TLSOptions do TsgcWebSocketClient para definir os arquivos do certificado.
A conexão através do SChannel requer que TLSOptions.IOHandler = iohSChannel.
O SChannel suporta 2 tipos de autenticação por certificado:
1. Utilizando um certificado PFX
2. Definindo o Hash Certificate de um certificado já instalado no sistema windows.
O certificado PFX é um arquivo que contém o certificado e a chave privada; às vezes você tem um certificado no formato PEM, portanto, antes de utilizá-lo, é necessário convertê-lo para PFX.
Utilize o seguinte comando openssl para converter um certificado PEM em PFX
openssl pkcs12 -inkey certificate-pem.key -in certificate-pem.crt -export -out certificate.pfx
Uma vez que o certificado esteja no formato PFX, você só precisa implantar o certificado e definir a propriedade TLSOptions.CertFile com o caminho dele.
TLSOptions.IOHandler = iohSChannel
TLSOptions.CertFile = <certificate path>
TLSOptions.Password = <certificate optional password>
Se o certificado já estiver instalado no repositório de certificados do Windows, você só precisa conhecer o thumbprint do certificado e defini-lo na propriedade TLSOptions.SChannel_Options.
Encontrar o hash de um certificado é tão fácil no powershell quanto executar um comando dir no contêiner de certificados.
dir cert:\localmachine\my
O hash é o valor hexadecimal do Thumbprint.
Directory: Microsoft.PowerShell.Security\Certificate::localmachine\my
Thumbprint Subject
---------- -------
C12A8FC8AE668F866B48F23E753C93D357E9BE10 CN=*.mydomain.com
Uma vez que você tenha o valor do Thumbprint, deve definir o hash e a localização do certificado na propriedade 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>