--- loncom/lonssl.pm	2006/08/25 17:49:15	1.10
+++ loncom/lonssl.pm	2015/11/08 03:15:13	1.14
@@ -1,5 +1,5 @@
 #
-# $Id: lonssl.pm,v 1.10 2006/08/25 17:49:15 albertel Exp $
+# $Id: lonssl.pm,v 1.14 2015/11/08 03:15:13 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -37,6 +37,7 @@ use strict;
 
 use IO::Socket::INET;
 use IO::Socket::SSL;
+use Net::SSLeay;
 
 use Fcntl;
 use POSIX;
@@ -141,12 +142,21 @@ sub PromoteClientSocket {
     my $dupfno   = fcntl($PlaintextSocket, F_DUPFD, 0);
     Debug("Client promotion got dup = $dupfno\n");
 
+    # Starting with IO::Socket::SSL rev. 1.79, carp warns that a verify 
+    # mode of SSL_VERIFY_NONE should be explicitly set for client, if 
+    # verification is not to be used, and SSL_verify_mode is not set.
+    # Starting with rev. 1.95, the default became SSL_VERIFY_PEER which
+    # prevents connections to lond.
+    # Set SSL_verify_mode to Net::SSLeay::VERIFY_NONE() instead of to
+    # SSL_VERIFY_NONE for compatibility with IO::Socket::SSL rev. 1.01
+    # used by CentOS/RHEL/Scientific Linux 5).
     
     my $client = IO::Socket::SSL->new_from_fd($dupfno,
-					      SSL_user_cert => 1,
+					      SSL_use_cert => 1,
 					      SSL_key_file  => $KeyFile,
 					      SSL_cert_file => $MyCert,
-					      SSL_ca_fie    => $CACert);
+					      SSL_ca_file   => $CACert,
+					      SSL_verify_mode => Net::SSLeay::VERIFY_NONE());
     
     if(!$client) {
 	$lasterror = IO::Socket::SSL::errstr();
@@ -196,10 +206,10 @@ sub PromoteServerSocket {
     Debug(" Fileno = $dupfno\n");
     my $client = IO::Socket::SSL->new_from_fd($dupfno,
 					      SSL_server    => 1, # Server role.
-					      SSL_user_cert => 1,
+					      SSL_use_cert  => 1,
 					      SSL_key_file  => $KeyFile,
 					      SSL_cert_file => $MyCert,
-					      SSL_ca_fie    => $CACert);
+					      SSL_ca_file   => $CACert);
     if(!$client) {
 	$lasterror = IO::Socket::SSL::errstr();
 	return undef;