diff --git a/addressbook/backends/ldap/e-book-backend-ldap.c b/addressbook/backends/ldap/e-book-backend-ldap.c
index 8ad5a20..dca5a08 100644
--- a/addressbook/backends/ldap/e-book-backend-ldap.c
+++ b/addressbook/backends/ldap/e-book-backend-ldap.c
@@ -895,6 +895,19 @@ e_book_backend_ldap_connect (EBookBackendLDAP *bl)
 				else
 					ldap_error = pldap_start_tls_s (blpriv->ldap, NULL, NULL);
 #else /* !defined(_WIN32) */
+				#if defined (LDAP_OPT_X_TLS_TRY) && defined (LDAP_OPT_X_TLS)
+				{
+				gint tls_level = LDAP_OPT_X_TLS_TRY;
+				ldap_set_option (blpriv->ldap, LDAP_OPT_X_TLS, &tls_level);
+				}
+				#endif
+				#if defined (LDAP_OPT_X_TLS_PROTOCOL_MIN) && defined (LDAP_OPT_X_TLS_PROTOCOL_TLS1_2) && defined (LDAP_OPT_X_TLS_PROTOCOL_SSL2)
+				{
+				gint version = LDAP_OPT_X_TLS_PROTOCOL (LDAP_OPT_X_TLS_PROTOCOL_TLS1_2, LDAP_OPT_X_TLS_PROTOCOL_SSL2);
+				ldap_set_option (blpriv->ldap, LDAP_OPT_X_TLS_PROTOCOL_MIN, &version);
+				}
+				#endif
+
 				ldap_error = ldap_start_tls_s (blpriv->ldap, NULL, NULL);
 #endif /* _WIN32 */
 #endif
@@ -5094,6 +5107,9 @@ e_book_backend_ldap_load_source (EBookBackend             *backend,
 		return;
 	}
 
+	if (bl->priv->ldap_port == LDAPS_PORT)
+		bl->priv->use_tls = E_BOOK_BACKEND_LDAP_TLS_WHEN_POSSIBLE;
+
 	if (bl->priv->cache) {
 		g_object_unref (bl->priv->cache);
 		bl->priv->cache = NULL;
