Certificados SChannel

· Recursos

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\my
Thumbprint 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>';