diff --git a/src/box/applier.cc b/src/box/applier.cc
index a8b2f61ef094aecf620b3f3735fed14b4e603942..f30d9f2f77158a7ac30dad7058850d4727b7f7ab 100644
--- a/src/box/applier.cc
+++ b/src/box/applier.cc
@@ -60,6 +60,7 @@
 #include "small/static.h"
 #include "tt_static.h"
 #include "memory.h"
+#include "ssl_error.h"
 
 STRS(applier_state, applier_STATE);
 
@@ -119,6 +120,7 @@ applier_log_error(struct applier *applier, struct error *e)
 	case ER_ACCESS_DENIED:
 	case ER_NO_SUCH_USER:
 	case ER_SYSTEM:
+	case ER_SSL:
 	case ER_UNKNOWN_REPLICA:
 	case ER_PASSWORD_MISMATCH:
 	case ER_XLOG_GAP:
@@ -2186,7 +2188,8 @@ applier_f(va_list ap)
 				applier_log_error(applier, e);
 				applier_disconnect(applier, APPLIER_LOADING);
 				goto reconnect;
-			} else if (e->errcode() == ER_SYSTEM) {
+			} else if (e->errcode() == ER_SYSTEM ||
+				   e->errcode() == ER_SSL) {
 				/* System error from master instance. */
 				applier_log_error(applier, e);
 				applier_disconnect(applier, APPLIER_DISCONNECTED);
@@ -2239,6 +2242,10 @@ applier_f(va_list ap)
 			applier_log_error(applier, e);
 			applier_disconnect(applier, APPLIER_DISCONNECTED);
 			goto reconnect;
+		} catch (SSLError *e) {
+			applier_log_error(applier, e);
+			applier_disconnect(applier, APPLIER_DISCONNECTED);
+			goto reconnect;
 		} catch (Exception *e) {
 			applier_log_error(applier, e);
 			applier_disconnect(applier, APPLIER_STOPPED);