diff --git a/src/checks.c b/src/checks.c
index b9fb4d5..b2322b2 100644
--- a/src/checks.c
+++ b/src/checks.c
@@ -2916,7 +2916,13 @@
 		}
 	}
 	else {
-		/* TODO: add support for sock4 and sni option */
+#ifdef USE_OPENSSL
+		if (status == SF_ERR_NONE) {
+			if (connect->sni)
+				ssl_sock_set_servername(conn, connect->sni);
+		}
+#endif
+		/* TODO: add support for sock4  option */
 		if (connect->options & TCPCHK_OPT_SEND_PROXY) {
 			conn->send_proxy_ofs = 1;
 			conn->flags |= CO_FL_SEND_PROXY;
@@ -3445,6 +3451,8 @@
 		}
 		break;
 	case TCPCHK_ACT_CONNECT:
+		free(rule->connect.sni);
+		break;
 	case TCPCHK_ACT_COMMENT:
 		break;
 	case TCPCHK_ACT_ACTION_KW:
@@ -4066,7 +4074,7 @@
 						    char **errmsg)
 {
 	struct tcpcheck_rule *chk = NULL;
-	char *comment = NULL;
+	char *comment = NULL, *sni = NULL;
 	unsigned short conn_opts = 0;
 	long port = 0;
 
@@ -4117,12 +4125,25 @@
 			px->options |= PR_O_TCPCHK_SSL;
 			conn_opts |= TCPCHK_OPT_SSL;
 		}
+		else if (strcmp(args[cur_arg], "sni") == 0) {
+			if (!*(args[cur_arg+1])) {
+				memprintf(errmsg, "'%s' expects a string as argument.", args[cur_arg]);
+				goto error;
+			}
+			cur_arg++;
+			free(sni);
+			sni = strdup(args[cur_arg]);
+			if (!sni) {
+				memprintf(errmsg, "out of memory");
+				goto error;
+			}
+		}
 #endif /* USE_OPENSSL */
 
 		else {
 			memprintf(errmsg, "expects 'comment', 'port', 'send-proxy'"
 #ifdef USE_OPENSSL
-				  ", 'ssl'"
+				  ", 'ssl', 'sni'"
 #endif /* USE_OPENSSL */
 				  " or 'linger' but got '%s' as argument.",
 				  args[cur_arg]);
@@ -4140,9 +4161,11 @@
 	chk->comment = comment;
 	chk->connect.port    = port;
 	chk->connect.options = conn_opts;
+	chk->connect.sni     = sni;
 	return chk;
 
   error:
+	free(sni);
 	free(comment);
 	return NULL;
 }
