Index: src/main.c
--- src/main.c.orig
+++ src/main.c
@@ -460,14 +460,6 @@ int main( int argc, char *argv[] )
     /* Set up OpenSSL thread protection */
     ssl_thread_setup(fn);
 
-#ifndef HAVE_RAND_EGD
-    if ( RAND_egd( ( RAND_file_name( f_randfile, sizeof( f_randfile ) ) == f_randfile ) ? f_randfile : "/.rnd" ) ) 
-#endif
-    {
-	if ( RAND_load_file( f_randfile, -1 ) )
-	    RAND_write_file( f_randfile );
-    }
-
     SSL_load_error_strings();
 
     /* 
@@ -681,6 +673,22 @@ int main( int argc, char *argv[] )
     if ( BecomeNonRoot() )
 	exit( 1 );
 
+    /*
+     * Optional dir accessed at runtime if it exists, but allow unveil() to fail
+     * so the daemon can still run if the dir does not exist.
+     */
+    unveil("/etc/ssl/certs", "r");
+    if ( unveil(NULL, NULL) != 0 )
+    {
+	syslog(LOG_ERR, "%s: unveil() failed: [%d]\n", fn, rc);
+	exit( 1 );
+    }
+    if ( pledge("stdio inet dns rpath", NULL) != 0 )
+    {
+	syslog(LOG_ERR, "%s: pledge() failed: [%d]\n", fn, rc);
+	exit( 1 );
+    }
+
     /* some misc thread setup */
     rc = pthread_attr_init( &attr );
     if ( rc )
@@ -1574,9 +1582,9 @@ static int verify_callback(int ok, X509_STORE_CTX * ct
 	    verify_error = X509_V_ERR_CERT_CHAIN_TOO_LONG;
 	}
     }
-    switch (ctx->error) {
+    switch (err) {
     case X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT:
-	X509_NAME_oneline(X509_get_issuer_name(ctx->current_cert), buf, sizeof(buf));
+	X509_NAME_oneline(X509_get_issuer_name(err_cert), buf, sizeof(buf));
 	syslog(LOG_NOTICE, "issuer= %s", buf);
 	break;
     case X509_V_ERR_CERT_NOT_YET_VALID:
