Subject: Re: mod_auth_kerb
To: None <netbsd-help@netbsd.org>
From: Jukka Salmi <j+nbsd@2005.salmi.ch>
List: netbsd-help
Date: 06/28/2005 12:50:59
--2oS5YaxWCcQjTEyO
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

Thierry Lacoste --> netbsd-help (2005-06-28 11:45:19 +0200):
> $ httpd -v
> Server version: Apache/1.3.33 (Unix)
> Server built:   Jun 20 2005 22:26:06
[...]
> I downloaded mod_auth_kerb-5.0-rc6.tar.gz from 
> http://sourceforge.net/project/showfiles.php?group_id=51775

Same here.


> $ tar -xvzf mod_auth_kerb-5.0-rc6.tar.gz
> $ cd mod_auth_kerb-5.0-rc6
> $ ./configure
[...]
> checking for krb5_init_context in -lkrb5... yes
> checking whether we are using Heimdal... no
[...]
> Well the line 'checking whether we are using Heimdal... no'
> doesn't sound good.

Indeed.


> I tried to set --with-krb5 but I didn't find any satisfying value.

Reading the notes I wrote down when installing mod_auth_krb5, I see now that
I created a krb5-config script and put it to /usr/bin (some software expect
it to be there...). Unfortunately NetBSD doesn't ship with such a file by
default, but you can easily build it from src/crypto/dist/heimdal/tools. The
script I'm using is attached.

Additionally, because I store the webserver's principal in a separate keytab
file, I needed to apply a patch to mod_auth_kerb's src/mod_auth_kerb.c to
make httpd read the keytab defined by `Krb5Keytab' and not the system keytab.
This patch (and another patch to fix 'make clean') is attached as well.

After patching mod_auth_kerb-5.0-rc6 with the attached patches, running

	$ ./configure --prefix=/usr/local --without-krb4 \
		--with-krb5=/usr --with-apache=/usr/pkg
	$ make
	$ sudo make install

should work fine.


HTH, Jukka

-- 
bashian roulette:
$ ((RANDOM%6)) || rm -rf ~

--2oS5YaxWCcQjTEyO
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename=krb5-config

#!/bin/sh
# $Heimdal: krb5-config.in,v 1.9 2002/09/09 22:29:06 joda Exp $
# $NetBSD: krb5-config.in,v 1.2 2002/09/12 13:19:24 joda Exp $

do_libs=no
do_cflags=no
do_usage=no
print_prefix=no
print_exec_prefix=no
library=krb5

if test $# -eq 0; then
  do_usage=yes
  usage_exit=1
fi

for i in $*; do
  case $i in
  --help)
    do_usage=yes
    usage_exit=0
    ;;
  --version)
    echo "heimdal 0.6.1"
    echo '$Id: krb5-config.in,v 1.2 2002/09/12 13:19:24 joda Exp $'
    exit 0
    ;;
  --prefix=*)
    prefix=`echo $i | sed 's/^--prefix=//'`
    ;;
  --prefix)
    print_prefix=yes
    ;;
  --exec-prefix=*)
    exec_prefix=`echo $i | sed 's/^--exec-prefix=//'`
    ;;
  --exec-prefix)
    print_exec_prefix=yes
    ;;
  --libs)
    do_libs=yes
    ;;
  --cflags)
    do_cflags=yes
    ;;
  krb5)
    library=krb5
    ;;
  gssapi)
    library=gssapi
    ;;
  kadm-client)
    library=kadm-client
    ;;
  kadm-server)
    library=kadm-server
    ;;
  *)
    echo "unknown option: $i"
    exit 1
    ;;
  esac
done

if test "$do_usage" = "yes"; then
    echo "usage: $0 [options] [libraries]"
    echo "options: [--prefix[=dir]] [--exec-prefix[=dir]] [--libs] [--cflags]"
    echo "libraries: krb5 gssapi kadm-client kadm-server"
    exit $usage_exit
fi

if test "$prefix" = ""; then
  prefix=/usr
fi
if test "$exec_prefix" = ""; then
  exec_prefix=/usr
fi

libdir=/usr/lib
includedirs='/usr/include/gssapi /usr/include/krb5'

if test "$print_prefix" = "yes"; then
    echo $prefix
fi

if test "$print_exec_prefix" = "yes"; then
    echo $exec_prefix
fi

if test "$do_libs" = "yes"; then
    lib_flags="-L${libdir}"
    case $library in
    gssapi)
	lib_flags="$lib_flags -lgssapi"
	;;
    kadm-client)
	lib_flags="$lib_flags -lkadm5clnt"
	;;
    kadm-server)
	lib_flags="$lib_flags -lkadm5srv"
	;;
    esac
    lib_flags="$lib_flags -lkrb5 -lasn1 -ldes -lroken"
    lib_flags="$lib_flags -lcrypto -lcom_err"
    echo $lib_flags
fi
if test "$do_cflags" = "yes"; then
    for dir in $includedirs; do
        echo -n "-I$dir "
    done
fi

exit 0

--2oS5YaxWCcQjTEyO
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="ktname.patch"

--- src/mod_auth_kerb.c.orig	2004-08-10 14:01:01.000000000 +0200
+++ src/mod_auth_kerb.c	2005-06-28 12:11:25.000000000 +0200
@@ -1120,6 +1120,10 @@
      }
      sprintf(ktname, "KRB5_KTNAME=%s", conf->krb_5_keytab);
      putenv(ktname);
+#ifdef HEIMDAL
+     /* Seems to be also supported by latest MIT */
+     gsskrb5_register_acceptor_identity(conf->krb_5_keytab);
+#endif
   }
 
   ret = get_gss_creds(r, conf, &server_creds);

--2oS5YaxWCcQjTEyO
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="makefile_rm.patch"

--- Makefile.in.orig	2004-07-05 22:47:42.000000000 +0200
+++ Makefile.in	2004-11-03 00:11:29.000000000 +0100
@@ -10,6 +10,8 @@
 LDFLAGS = $(KRB5_LDFLAGS) $(KRB4_LDFLAGS) $(LIB_resolv)
 CFLAGS =
 
+RM = rm -f
+
 all: src/mod_auth_kerb.so
 
 src/mod_auth_kerb.so: src/mod_auth_kerb.c $(SPNEGO_SRCS)
@@ -20,7 +22,7 @@
 
 clean:
 	for i in . src spnegokrb5; do \
-		$(RM) $$i/*.{o,so,a,la,lo,slo} core; \
+		$(RM) $$i/*.[oa] $$i/*.so $$i/*.l[ao] $$i/*.slo core; \
 	done
 
 distclean: clean

--2oS5YaxWCcQjTEyO--