Comment implémenter SNI (Server Name Indication) sur OpenSSL en C ou C ++?
Existe-t-il des exemples du monde réel disponibles?
Du côté client, vous utilisez SSL_set_tlsext_host_name(ssl, servername)
avant d’établir la connexion SSL.
Côté serveur, c’est un peu plus compliqué:
SSL_CTX()
supplémentaire pour chaque certificate différent; SSL_CTX()
à chaque SSL_CTX()
aide de SSL_CTX_set_tlsext_servername_callback()
; SSL_get_servername(ssl, TLSEXT_NAMETYPE_host_name)
. SSL_CTX
le bon SSL_CTX
pour qu’il corresponde à ce nom d’hôte, puis basculez l’object SSL
sur cet SSL_CTX
avec SSL_set_SSL_CTX()
. Les fichiers s_client.c
et s_server.c
répertoire apps/
de la dissortingbution source OpenSSL implémentent cette fonctionnalité. Ils constituent donc une bonne ressource pour savoir comment procéder.