--- /dev/null
+--- a/deps/neverbleed/neverbleed.c
++++ b/deps/neverbleed/neverbleed.c
+@@ -1486,6 +1486,7 @@ int neverbleed_init(neverbleed_t *nb, char *errbuf)
+ close(pipe_fds[0]);
+ pipe_fds[0] = -1;
+
++#ifndef OPENSSL_NO_ENGINE
+ /* setup engine */
+ if ((nb->engine = ENGINE_new()) == NULL || !ENGINE_set_id(nb->engine, "neverbleed") ||
+ !ENGINE_set_name(nb->engine, "privilege separation software engine") || !ENGINE_set_RSA(nb->engine, rsa_method)
+@@ -1497,6 +1498,7 @@ int neverbleed_init(neverbleed_t *nb, char *errbuf)
+ goto Fail;
+ }
+ ENGINE_add(nb->engine);
++#endif
+
+ /* setup thread key */
+ pthread_key_create(&nb->thread_key, dispose_thread_data);
+@@ -1515,7 +1517,9 @@ Fail:
+ if (listen_fd != -1)
+ close(listen_fd);
+ if (nb->engine != NULL) {
++#ifndef OPENSSL_NO_ENGINE
+ ENGINE_free(nb->engine);
++#endif
+ nb->engine = NULL;
+ }
+ return -1;