A partir do sgcWebSockets 4.4.7, o uso de certificados com SChannel como biblioteca de criptografia é suportado.
A implementação SChannel suporta 2 tipos de autenticação por certificado:
1. Usando um certificado PFX
2. Definindo o Hash Thumbprint de um certificado já instalado no sistema Windows.
Certificado PFX
Um certificado PFX é um arquivo que contém o certificado e a chave privada. Às vezes você tem um certificado no formato PEM, então antes de usá-lo é preciso convertê-lo para PFX.
Use o seguinte comando openssl para converter um certificado PEM para PFX
openssl pkcs12 -inkey certificate-pem.key -in certificate-pem.crt -export -out certificate.pfx
Após o certificado estar no formato PFX, basta implantá-lo e definir o caminho na propriedade TLSOptions.Certificate.
TLSOptions.IOHandler := iohSChannel; TLSOptions.CertFile := '<certificate path>'; TLSOptions.Password := '<certificate optional password>';
Hash Thumbprint
Se o certificado já estiver instalado no repositório de certificados do Windows, basta conhecer o thumbprint do certificado e defini-lo na propriedade TLSOptions.SChannel_Options.
Encontrar o hash de um certificado no PowerShell é tão simples 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\myThumbprint Subject---------- -------C12A8FC8AE668F866B48F23E753C93D357E9BE10 CN=*.mydomain.com
Com o valor do Thumbprint em mãos, defina na propriedade TLSOptions.SChannel_Options o hash e a localização do certificado.
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>';
