Da sgcWebSockets 4.4.7 è supportato l'uso di certificati con SChannel come libreria crittografica.
L'implementazione SChannel supporta 2 tipi di autenticazione tramite certificato:
1. tramite un certificato PFX
2. impostando l'Hash Thumbprint di un certificato già installato nel sistema Windows.
Certificato PFX
Un certificato PFX è un file che contiene il certificato e la chiave privata. A volte hai un certificato in formato PEM, quindi prima di usarlo devi convertirlo in PFX.
Usa il comando openssl seguente per convertire un certificato PEM in PFX
openssl pkcs12 -inkey certificate-pem.key -in certificate-pem.crt -export -out certificate.pfx
Una volta che il certificato è in formato PFX, devi solo distribuire il certificato e impostare nella proprietà TLSOptions.Certificate il suo percorso.
TLSOptions.IOHandler := iohSChannel; TLSOptions.CertFile := '<certificate path>'; TLSOptions.Password := '<certificate optional password>';
Hash Thumbprint
Se il certificato è già installato nel certificate store di Windows, devi solo conoscere il thumbprint del certificato e impostarlo nella proprietà TLSOptions.SChannel_Options.
Trovare l'hash di un certificato in powershell è semplice come eseguire un comando dir sul container dei certificati.
dir cert:\localmachine\my
L'hash è il valore esadecimale Thumbprint.
Directory: Microsoft.PowerShell.Security\Certificate::localmachine\myThumbprint Subject---------- -------C12A8FC8AE668F866B48F23E753C93D357E9BE10 CN=*.mydomain.com
Una volta ottenuto il valore Thumbprint, devi impostare nella proprietà TLSOptions.SChannel_Options l'hash e dove si trova il certificato.
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>';
