diff --git a/src/ssl_sock.c b/src/ssl_sock.c
index b289aae..886ebd5 100644
--- a/src/ssl_sock.c
+++ b/src/ssl_sock.c
@@ -2934,28 +2934,34 @@
 }
 #endif
 
-/* Loads the contents of a crt file (path) into a cert_key_and_chain
- * This allows us to carry the contents of the file without having to
- * read the file multiple times.
- * The caller must call ssl_sock_free_cert_key_and_chain_contents.
+/* Loads the contents of a crt file (path) or BIO into a cert_key_and_chain
+ * This allows us to carry the contents of the file without having to read the
+ * file multiple times.  The caller must call
+ * ssl_sock_free_cert_key_and_chain_contents.
  *
  * returns:
  *      0 on Success
  *      1 on SSL Failure
  */
-static int ssl_sock_load_crt_file_into_ckch(const char *path, struct cert_key_and_chain *ckch, char **err)
+static int ssl_sock_load_crt_file_into_ckch(const char *path, BIO *buf, struct cert_key_and_chain *ckch, char **err)
 {
 
-	BIO *in;
+	BIO *in = NULL;
 	X509 *ca;
 	int ret = 1;
 
-	in = BIO_new(BIO_s_file());
-	if (in == NULL)
-		goto end;
+	if (buf != NULL && path != NULL) {
+		in = buf;
+	} else if (path != NULL) {
+		in = BIO_new(BIO_s_file());
+		if (in == NULL)
+			goto end;
 
-	if (BIO_read_filename(in, path) <= 0)
+		if (BIO_read_filename(in, path) <= 0)
+			goto end;
+	} else {
 		goto end;
+	}
 
 	/* Read Private Key */
 	ckch->key = PEM_read_bio_PrivateKey(in, NULL, NULL, NULL);
@@ -3019,7 +3025,7 @@
 end:
 
 	ERR_clear_error();
-	if (in)
+	if (in && !buf)
 		BIO_free(in);
 
 	/* Something went wrong in one of the reads */
@@ -3166,7 +3172,7 @@
 
 	if (!multi) {
 
-		if (ssl_sock_load_crt_file_into_ckch(path, ckchs->ckch, err) == 1)
+		if (ssl_sock_load_crt_file_into_ckch(path, NULL, ckchs->ckch, err) == 1)
 			goto end;
 
 		/* insert into the ckchs tree */
@@ -3183,7 +3189,7 @@
 			struct stat buf;
 			snprintf(fp, sizeof(fp), "%s.%s", path, SSL_SOCK_KEYTYPE_NAMES[n]);
 			if (stat(fp, &buf) == 0) {
-				if (ssl_sock_load_crt_file_into_ckch(fp, &ckchs->ckch[n], err) == 1)
+				if (ssl_sock_load_crt_file_into_ckch(fp, NULL, &ckchs->ckch[n], err) == 1)
 					goto end;
 				found = 1;
 				ckchs->multi = 1;
