Quando il server richiede che il client si connetta utilizzando un certificato SSL, utilizzare la proprietà TLSOptions di TsgcWebSocketClient per impostare i file del certificato.
La connessione tramite SChannel richiede che TLSOptions.IOHandler = iohSChannel.
SChannel supporta 2 tipi di autenticazione tramite certificato:
1. Utilizzo di un certificato PFX
2. Impostazione dell'Hash Certificate di un certificato già installato nel sistema Windows.
Il certificato PFX è un file che contiene il certificato e la chiave privata; a volte si dispone di un certificato in formato PEM, quindi prima di utilizzarlo è necessario convertirlo in PFX.
Utilizzare il seguente comando openssl 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, è sufficiente distribuirlo e impostare la proprietà TLSOptions.CertFile sul percorso corrispondente.
TLSOptions.IOHandler = iohSChannel
TLSOptions.CertFile = <certificate path>
TLSOptions.Password = <certificate optional password>
Se il certificato è già installato nell'archivio certificati di Windows, è necessario conoscere solo l'identificazione personale del certificato e impostarla nella proprietà TLSOptions.SChannel_Options.
Trovare l'hash di un certificato è altrettanto semplice in powershell quanto eseguire un comando dir sul contenitore dei certificati.
dir cert:\localmachine\my
L'hash è il valore Thumbprint esadecimale.
Directory: Microsoft.PowerShell.Security\Certificate::localmachine\my
Thumbprint Subject
---------- -------
C12A8FC8AE668F866B48F23E753C93D357E9BE10 CN=*.mydomain.com
Una volta ottenuto il valore Thumbprint, è necessario impostare l'hash e la posizione del certificato nella proprietà 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>