Junio C Hamano <gitster@xxxxxxxxx> writes: > To talk to a site that serves multiple names on a single IP address, > the client needs to ask for the specific hostname it wants to talk > to. Otherwise, the default certificate returned from the IP address > may not match that of the host we wanted to talk to. > > Signed-off-by: Junio C Hamano <gitster@xxxxxxxxx> > --- > > * I need help from people on this patch in two areas: > > (1) I only tested this patch by connecting to https://googlemail.com/ > with > ... > I would appreciate it if somebody knows an imap server that > needs SNI and runs an end-to-end test against that server. > > (2) I do not know if everybody has SSL_set_tslext_host_name() macro > defined, so this patch may be breaking build for people with > different versions of OpenSSL. What I queued for tonight replaces the posted patch with this version in order to address (2) above. -- >8 -- Subject: [PATCH] imap-send: support SNI (RFC4366) To talk with some sites that serve multiple names on a single IP address, the client needs to ask for the specific host it wants to talk to. Signed-off-by: Junio C Hamano <gitster@xxxxxxxxx> --- imap-send.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/imap-send.c b/imap-send.c index 171c887..ab2098a 100644 --- a/imap-send.c +++ b/imap-send.c @@ -370,6 +370,17 @@ static int ssl_socket_connect(struct imap_socket *sock, int use_tls_only, int ve return -1; } +#ifdef SSL_CTRL_SET_TLSEXT_HOSTNAME + /* + * SNI (RFC4366) + * OpenSSL does not document this function, but the implementation + * returns 1 on success, 0 on failure after calling SSLerr(). + */ + ret = SSL_set_tlsext_host_name(sock->ssl, server.host); + if (ret != 1) + warning("SSL_set_tslext_host_name(%s) failed.\n", server.host); +#endif + ret = SSL_connect(sock->ssl); if (ret <= 0) { socket_perror("SSL_connect", sock, ret); -- 1.8.2.rc0.127.g4d5d7da -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html