TsgcWebSocketClient | Certificati SChannel

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.

 

Certificato PFX

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>

 

Hash Certificate

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>