TsgcWebSocketClient | Certificates SChannel

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.

 

PFX Certificate

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>

 

Hash Certificate

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>