Lorsque le serveur requiert que le client se connecte en utilisant un certificat SSL, utilisez la propriété TLSOptions de TsgcWebSocketClient pour définir les fichiers de certificats.
La connexion via SChannel nécessite que TLSOptions.IOHandler = iohSChannel.
SChannel prend en charge 2 types d'authentification par certificat :
1. Utilisation d'un certificat PFX
2. Définir le Hash du Certificat d'un certificat déjà installé dans le système Windows.
Un certificat PFX est un fichier qui contient le certificat et la clé privée ; parfois vous disposez d'un certificat au format PEM, vous devez donc le convertir en PFX avant de l'utiliser.
Utilisez la commande openssl suivante pour convertir un certificat PEM en PFX
openssl pkcs12 -inkey certificate-pem.key -in certificate-pem.crt -export -out certificate.pfx
Une fois le certificat au format PFX, vous n'avez qu'à déployer le certificat et définir la propriété TLSOptions.CertFile sur son chemin d'accès.
TLSOptions.IOHandler = iohSChannel
TLSOptions.CertFile = <certificate path>
TLSOptions.Password = <certificate optional password>
Si le certificat est déjà installé dans le magasin de certificats Windows, vous avez seulement besoin de connaître l'empreinte numérique du certificat et de la définir dans la propriété TLSOptions.SChannel_Options.
Trouver le hachage d'un certificat est aussi simple dans powershell qu'exécuter une commande dir sur le conteneur de certificats.
dir cert:\localmachine\my
Le hachage est la valeur hexadécimale de l'empreinte numérique.
Directory: Microsoft.PowerShell.Security\Certificate::localmachine\my
Thumbprint Subject
---------- -------
C12A8FC8AE668F866B48F23E753C93D357E9BE10 CN=*.mydomain.com
Une fois que vous avez la valeur de l'empreinte numérique, vous devez définir le hachage et l'emplacement du certificat dans la propriété 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>