diff -c -r stunnel-3.8/common.h stunnel-3.8~/common.h *** stunnel-3.8/common.h Thu Feb 24 03:35:00 2000 --- stunnel-3.8~/common.h Thu May 4 12:37:53 2000 *************** *** 135,140 **** --- 135,141 ---- typedef struct { char certfile[STRLEN]; /* name of the certificate */ char clientdir[STRLEN]; + char cacert[STRLEN]; char pidfile[STRLEN]; unsigned long dpid; int clients; diff -c -r stunnel-3.8/ssl.c stunnel-3.8~/ssl.c *** stunnel-3.8/ssl.c Fri Feb 18 07:26:48 2000 --- stunnel-3.8~/ssl.c Thu May 4 12:36:09 2000 *************** *** 228,240 **** } if(options.verify_level!=SSL_VERIFY_NONE) { if ((!SSL_CTX_set_default_verify_paths(ctx)) ! || (!SSL_CTX_load_verify_locations(ctx, CLIENT_CA, options.clientdir))){ sslerror("X509_load_verify_locations"); exit(1); } SSL_CTX_set_verify(ctx, options.verify_level, verify_callback); ! SSL_CTX_set_client_CA_list(ctx, SSL_load_client_CA_file(CLIENT_CA)); if (options.verify_use_only_my) log(LOG_NOTICE, "Peer certificate location %s", options.clientdir); } --- 228,240 ---- } if(options.verify_level!=SSL_VERIFY_NONE) { if ((!SSL_CTX_set_default_verify_paths(ctx)) ! || (!SSL_CTX_load_verify_locations(ctx, options.cacert, options.clientdir))){ sslerror("X509_load_verify_locations"); exit(1); } SSL_CTX_set_verify(ctx, options.verify_level, verify_callback); ! SSL_CTX_set_client_CA_list(ctx, SSL_load_client_CA_file(options.cacert)); if (options.verify_use_only_my) log(LOG_NOTICE, "Peer certificate location %s", options.clientdir); } diff -c -r stunnel-3.8/stunnel.8.in stunnel-3.8~/stunnel.8.in *** stunnel-3.8/stunnel.8.in Tue Feb 15 09:13:15 2000 --- stunnel-3.8~/stunnel.8.in Thu May 4 16:55:40 2000 *************** *** 3,14 **** stunnel \- universal SSL tunnel .SH SYNOPSIS .B stunnel ! [-T] [-p pemfile] [-v level] [-a directory] [-t timeout] [-u username] [-n protocol] [-d [ip:]port [-f]] [ -l program | -r [ip:]port | -L program [-- args] ] .PP .B stunnel ! {-c} [-p pemfile] [-v level] [-a directory] [-t timeout] [-u username] [-n protocol] -r [ip:]port [ -d [ip:]port [-f] | -l program | -L program [-- args] ] .SH DESCRIPTION --- 3,14 ---- stunnel \- universal SSL tunnel .SH SYNOPSIS .B stunnel ! [-T] [-p pemfile] [-v level] [-A certfile] [-a directory] [-t timeout] [-u username] [-n protocol] [-d [ip:]port [-f]] [ -l program | -r [ip:]port | -L program [-- args] ] .PP .B stunnel ! {-c} [-p pemfile] [-v level] [-A certfile] [-a directory] [-t timeout] [-u username] [-n protocol] -r [ip:]port [ -d [ip:]port [-f] | -l program | -L program [-- args] ] .SH DESCRIPTION *************** *** 47,54 **** --- 47,57 ---- verify peer certificate .RS level 1 - verify peer certificate if present + .br level 2 - verify peer certificate + .br level 3 - verify peer with locally installed certificate + .br default: no verify .RE .PP *************** *** 56,61 **** --- 59,75 ---- client certificate directory for -v 3 option .RS default: @ssldir@/certs/trusted + .RE + .PP + .B -A certfile + .RS + the client Certificate Authority certificate + .br + default: + .br + @ssldir@/cert.pem and/or + .br + @ssldir@/localCA/cacert.pem .RE .PP .B -t timeout diff -c -r stunnel-3.8/stunnel.c stunnel-3.8~/stunnel.c *** stunnel-3.8/stunnel.c Thu Feb 24 03:32:27 2000 --- stunnel-3.8~/stunnel.c Thu May 4 16:52:22 2000 *************** *** 148,153 **** --- 148,154 ---- options.foreground=1; safecopy(options.certfile, DEFAULT_CERT); safecopy(options.clientdir, CA_DIR); + safecopy(options.cacert, CLIENT_CA); get_options(argc, argv); if(!(options.option&OPT_FOREGROUND)) { options.foreground=0; *************** *** 217,224 **** options.setuid_user=NULL; options.setgid_group=NULL; opterr=0; ! while ((c = getopt(argc, argv, "a:cp:v:d:fTl:L:r:s:g:t:u:n:hC:D:V")) != EOF) switch (c) { case 'a': safecopy(options.clientdir, optarg); break; --- 218,228 ---- options.setuid_user=NULL; options.setgid_group=NULL; opterr=0; ! while ((c = getopt(argc, argv, "A:a:cp:v:d:fTl:L:r:s:g:t:u:n:hC:D:V")) != EOF) switch (c) { + case 'A': + safecopy(options.cacert, optarg); + break; case 'a': safecopy(options.clientdir, optarg); break; *************** *** 902,907 **** --- 906,913 ---- "\n\t\tdefault: no verify" "\n -a directory\tclient certificate directory for -v 3 option" "\n\t\tdefault: " CA_DIR + "\n -A certfile\tCA certificate for -v2 and -v3 options" + "\n\t\tdefault: " CLIENT_CA "\n -t timeout\tsession cache timeout" "\n\t\tdefault: 300 s." "\n -u user\tUse IDENT (RFC 1413) username checking"