1#!/bin/sh 2 3# Copyright (C) Internet Systems Consortium, Inc. ("ISC") 4# 5# SPDX-License-Identifier: MPL-2.0 6# 7# This Source Code Form is subject to the terms of the Mozilla Public 8# License, v. 2.0. If a copy of the MPL was not distributed with this 9# file, you can obtain one at https://mozilla.org/MPL/2.0/. 10# 11# See the COPYRIGHT file distributed with this work for additional 12# information regarding copyright ownership. 13 14set -x 15 16PWD=`pwd` 17 18KRB5_CONFIG="${PWD}/krb5.conf" 19export KRB5_CONFIG 20 21KRB5_KDC_PROFILE=${PWD}/krb5kdc 22export KRB5_KDC_PROFILE 23 24now=`date +%s` 25lifetime=`expr 2147483647 - $now` 26lifetime=`expr $lifetime / 3600 / 24 - 30` 27 28cat << EOF > "${KRB5_CONFIG}" 29[libdefaults] 30 default_realm = EXAMPLE.COM 31 dns_lookup_kdc = false 32 # Depending on what you are testing, you may want something like: 33 # default_keytab_name = FILE:/usr/local/var/keytab 34[realms] 35 EXAMPLE.COM = { 36 admin_server = 127.0.0.1:50001 37 kdc = 127.0.0.1:50000 38 database_module = DB2 39 kdc_ports = 50000 40 kadmind_port = 50001 41 } 42[dbmodules] 43 DB2 = { 44 db_library = db2 45 } 46[logging] 47 # Use any pathnames you want here. 48 kdc = FILE:${PWD}/kdc.log 49 admin_server = FILE:${PWD}/kadmin.log 50# Depending on what you are testing, you may want: 51# [domain_realm] 52# your.domain = EXAMPLE.COM 53EOF 54 55rm -rf ${KRB5_KDC_PROFILE} 56mkdir -p ${KRB5_KDC_PROFILE} 57chmod 700 ${KRB5_KDC_PROFILE} 58 59cat << EOF > "${KRB5_KDC_PROFILE}"/kdc.conf 60[kdcdefaults] 61 kdc_ports = 50000 62 kdc_tcp_ports = 50000 63 64[realms] 65 EXAMPLE.COM = { 66 key_stash_file = ${KRB5_KDC_PROFILE}/.k5.EXAMPLE.COM 67 database_module = EXAMPLE.COM 68 max_life = ${lifetime}d 69} 70 71[dbmodules] 72 EXAMPLE.COM = { 73 db_library = db2 74 database_name = ${KRB5_KDC_PROFILE}/principal 75 } 76EOF 77 78kdb5_util create -s <<EOF 79master 80master 81EOF 82 83krb5kdc -n & 84krb5kdcpid=$! 85#trap "kill $krb5kdcpid; wait; trap 0; exit" 0 15 86 87 88kadmin.local addprinc -maxlife ${lifetime}d -randkey DNS/ns7.example.com@EXAMPLE.COM 89kadmin.local addprinc -maxlife ${lifetime}d -randkey DNS/ns8.example.com@EXAMPLE.COM 90kadmin.local addprinc -maxlife ${lifetime}d -randkey host/machine.example.com@EXAMPLE.COM 91 92kadmin.local ktadd -k ns7-server.keytab DNS/ns7.example.com@EXAMPLE.COM 93kadmin.local ktadd -k ns8-server.keytab DNS/ns8.example.com@EXAMPLE.COM 94kadmin.local ktadd -k krb5-machine.keytab host/machine.example.com@EXAMPLE.COM 95 96kadmin.local addprinc -maxlife ${lifetime}d -randkey 'DNS/ns9.example.com@EXAMPLE.COM' 97kadmin.local addprinc -maxlife ${lifetime}d -randkey 'DNS/ns10.example.com@EXAMPLE.COM' 98kadmin.local addprinc -maxlife ${lifetime}d -randkey 'machine$@EXAMPLE.COM' 99 100kadmin.local ktadd -k ns9-server.keytab 'DNS/ns9.example.com@EXAMPLE.COM' 101kadmin.local ktadd -k ns10-server.keytab 'DNS/ns10.example.com@EXAMPLE.COM' 102kadmin.local ktadd -k ms-machine.keytab 'machine$@EXAMPLE.COM' 103 104kinit -V -k -t krb5-machine.keytab -l ${lifetime}d -c krb5-machine.ccache host/machine.example.com@EXAMPLE.COM 105kinit -V -k -t ms-machine.keytab -l ${lifetime}d -c ms-machine.ccache 'machine$@EXAMPLE.COM' 106 107cp ns7-server.keytab ../ns7/dns.keytab 108cp ns8-server.keytab ../ns8/dns-other-than-KRB5_KTNAME.keytab 109cp ns9-server.keytab ../ns9/dns.keytab 110cp ns10-server.keytab ../ns10/dns.keytab 111 112cp krb5-machine.ccache ../ns7/machine.ccache 113cp krb5-machine.ccache ../ns8/machine.ccache 114cp ms-machine.ccache ../ns9/machine.ccache 115cp ms-machine.ccache ../ns10/machine.ccache 116 117echo krb5kdc pid:$krb5kdcpid 118