Comment implémenter l'indication du nom du serveur (SNI) sur OpenSSL en C ou C++?
Y a-t-il des exemples de monde réels disponibles?
Sur le côté du client, vous utilisez SSL_set_tlsext_Host_name(ssl, servername)
avant d'initier la connexion SSL.
Sur le côté serveur, c'est un peu plus compliqué:
SSL_CTX()
pour chaque certificat différent;SSL_CTX()
à l'aide de SSL_CTX_set_tlsext_servername_callback()
;SSL_get_servername(ssl, TLSEXT_NAMETYPE_Host_name)
. Déterminez la droite SSL_CTX
Pour aller avec ce nom d'hôte, puis basculez l'objet SSL
sur celui-ci SSL_CTX
Avec SSL_set_SSL_CTX()
.Les fichiers s_client.c
Et s_server.c
Dans le répertoire apps/
De la distribution de source OpenSSL implémente cette fonctionnalité, de sorte qu'ils sont une bonne ressource pour voir comment cela devrait être fait.