xref: /netbsd-src/crypto/external/bsd/heimdal/dist/lib/krb5/krb5.conf.5 (revision afab4e300d3a9fb07dd8c80daf53d0feb3345706)
1.\"	$NetBSD: krb5.conf.5,v 1.7 2023/06/19 21:41:44 christos Exp $
2.\"
3.\" Copyright (c) 1999 - 2005 Kungliga Tekniska Högskolan
4.\" (Royal Institute of Technology, Stockholm, Sweden).
5.\" All rights reserved.
6.\"
7.\" Redistribution and use in source and binary forms, with or without
8.\" modification, are permitted provided that the following conditions
9.\" are met:
10.\"
11.\" 1. Redistributions of source code must retain the above copyright
12.\"    notice, this list of conditions and the following disclaimer.
13.\"
14.\" 2. Redistributions in binary form must reproduce the above copyright
15.\"    notice, this list of conditions and the following disclaimer in the
16.\"    documentation and/or other materials provided with the distribution.
17.\"
18.\" 3. Neither the name of the Institute nor the names of its contributors
19.\"    may be used to endorse or promote products derived from this software
20.\"    without specific prior written permission.
21.\"
22.\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
23.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
26.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32.\" SUCH DAMAGE.
33.\"
34.\" Id
35.\"
36.Dd May  4, 2005
37.Dt KRB5.CONF 5
38.Os
39.Sh NAME
40.Nm krb5.conf
41.Nd configuration file for Kerberos 5
42.Sh SYNOPSIS
43.In krb5/krb5.h
44.Sh DESCRIPTION
45The
46.Nm
47file specifies several configuration parameters for the Kerberos 5
48library, as well as for some programs.
49.Pp
50The file consists of one or more sections, containing a number of
51bindings.
52The value of each binding can be either a string or a list of other
53bindings.
54The grammar looks like:
55.Bd -literal -offset indent
56file:
57	/* empty */
58	sections
59
60sections:
61	section sections
62	section
63
64section:
65	'[' section_name ']' bindings
66
67section_name:
68	STRING
69
70bindings:
71	binding bindings
72	binding
73
74binding:
75	name '=' STRING
76	name '=' '{' bindings '}'
77
78name:
79	STRING
80
81.Ed
82.Li STRINGs
83consists of one or more non-whitespace characters.
84.Pp
85STRINGs that are specified later in this man-page uses the following
86notation.
87.Bl -tag -width "xxx" -offset indent
88.It boolean
89values can be either yes/true or no/false.
90.It time
91values can be a list of year, month, day, hour, min, second.
92Example: 1 month 2 days 30 min.
93If no unit is given, seconds is assumed.
94.It etypes
95valid encryption types are: des-cbc-crc, des-cbc-md4, des-cbc-md5,
96des3-cbc-sha1, arcfour-hmac-md5, aes128-cts-hmac-sha1-96, and
97aes256-cts-hmac-sha1-96 .
98.It address
99an address can be either a IPv4 or a IPv6 address.
100.El
101.Pp
102Currently recognised sections and bindings are:
103.Bl -tag -width "xxx" -offset indent
104.It Li [appdefaults]
105Specifies the default values to be used for Kerberos applications.
106You can specify defaults per application, realm, or a combination of
107these.
108The preference order is:
109.Bl -enum -compact
110.It
111.Va application Va realm Va option
112.It
113.Va application Va option
114.It
115.Va realm Va option
116.It
117.Va option
118.El
119.Pp
120The supported options are:
121.Bl -tag -width "xxx" -offset indent
122.It Li forwardable = Va boolean
123When obtaining initial credentials, make the credentials forwardable.
124.It Li proxiable = Va boolean
125When obtaining initial credentials, make the credentials proxiable.
126.It Li no-addresses = Va boolean
127When obtaining initial credentials, request them for an empty set of
128addresses, making the tickets valid from any address.
129.It Li ticket_lifetime = Va time
130Default ticket lifetime.
131.It Li renew_lifetime = Va time
132Default renewable ticket lifetime.
133.It Li encrypt = Va boolean
134Use encryption, when available.
135.It Li forward = Va boolean
136Forward credentials to remote host (for
137.Xr rsh 1 ,
138.Xr telnet 1 ,
139etc).
140.It Li historical_anon_pkinit = Va boolean
141Enable legacy anonymous pkinit command-line syntax.
142With this option set to
143.Li true,
144the
145.Xr kinit 1
146.Fl Fl anonymous
147command with no principal argument specified will request an anonymous pkinit
148ticket from the default realm.
149If a principal argument is specified, it is used as an explicit realm name for
150anonymous pkinit even without an
151.Li @
152prefix.
153.El
154.It Li [libdefaults]
155.Bl -tag -width "xxx" -offset indent
156.It Li default_realm = Va REALM
157Default realm to use, this is also known as your
158.Dq local realm .
159The default is the result of
160.Fn krb5_get_host_realm "local hostname" .
161.It Li allow_weak_crypto = Va boolean
162are weak crypto algorithms allowed to be used, among others, DES is
163considered weak.
164.It Li clockskew = Va time
165Maximum time differential (in seconds) allowed when comparing
166times.
167Default is 300 seconds (five minutes).
168.It Li kdc_timeout = Va time
169Maximum time to wait for a reply from the kdc, default is 3 seconds.
170.It Li capath = {
171.Bl -tag -width "xxx" -offset indent
172.It Va destination-realm Li = Va next-hop-realm
173.It ...
174.It Li }
175.El
176This is deprecated, see the
177.Li capaths
178section below.
179.It Li default_cc_type = Va cctype
180sets the default credentials type.
181.It Li default_cc_name = Va ccname
182the default credentials cache name.
183If you want to change the type only use
184.Li default_cc_type .
185The string can contain variables that are expanded on runtime.
186The Only supported variable currently is
187.Li %{uid}
188which expands to the current user id.
189.It Li default_etypes = Va etypes ...
190A list of default encryption types to use. (Default: all enctypes if
191allow_weak_crypto = TRUE, else all enctypes except single DES enctypes.)
192.It Li default_as_etypes = Va etypes ...
193A list of default encryption types to use in AS requests.  (Default: the
194value of default_etypes.)
195.It Li default_tgs_etypes = Va etypes ...
196A list of default encryption types to use in TGS requests.  (Default:
197the value of default_etypes.)
198.It Li default_etypes_des = Va etypes ...
199A list of default encryption types to use when requesting a DES credential.
200.It Li default_keytab_name = Va keytab
201The keytab to use if no other is specified, default is
202.Dq FILE:/etc/krb5.keytab .
203.It Li dns_lookup_kdc = Va boolean
204Use DNS SRV records to lookup KDC services location.
205.It Li dns_lookup_realm = Va boolean
206Use DNS TXT records to lookup domain to realm mappings.
207.It Li kdc_timesync = Va boolean
208Try to keep track of the time differential between the local machine
209and the KDC, and then compensate for that when issuing requests.
210.It Li max_retries = Va number
211The max number of times to try to contact each KDC.
212.It Li large_msg_size = Va number
213The threshold where protocols with tiny maximum message sizes are not
214considered usable to send messages to the KDC.
215.It Li ticket_lifetime = Va time
216Default ticket lifetime.
217.It Li renew_lifetime = Va time
218Default renewable ticket lifetime.
219.It Li forwardable = Va boolean
220When obtaining initial credentials, make the credentials forwardable.
221This option is also valid in the [realms] section.
222.It Li proxiable = Va boolean
223When obtaining initial credentials, make the credentials proxiable.
224This option is also valid in the [realms] section.
225.It Li verify_ap_req_nofail = Va boolean
226If enabled, failure to verify credentials against a local key is a
227fatal error.
228The application has to be able to read the corresponding service key
229for this to work.
230Some applications, like
231.Xr su 1 ,
232enable this option unconditionally.
233.It Li warn_pwexpire = Va time
234How soon to warn for expiring password.
235Default is seven days.
236.It Li http_proxy = Va proxy-spec
237A HTTP-proxy to use when talking to the KDC via HTTP.
238.It Li dns_proxy = Va proxy-spec
239Enable using DNS via HTTP.
240.It Li extra_addresses = Va address ...
241A list of addresses to get tickets for along with all local addresses.
242.It Li time_format = Va string
243How to print time strings in logs, this string is passed to
244.Xr strftime 3 .
245.It Li date_format = Va string
246How to print date strings in logs, this string is passed to
247.Xr strftime 3 .
248.It Li log_utc = Va boolean
249Write log-entries using UTC instead of your local time zone.
250.It Li scan_interfaces = Va boolean
251Scan all network interfaces for addresses, as opposed to simply using
252the address associated with the system's host name.
253.It Li fcache_version = Va int
254Use file credential cache format version specified.
255.It Li fcc-mit-ticketflags = Va boolean
256Use MIT compatible format for file credential cache.
257It's the field ticketflags that is stored in reverse bit order for
258older than Heimdal 0.7.
259Setting this flag to
260.Dv TRUE
261makes it store the MIT way, this is default for Heimdal 0.7.
262.It Li check-rd-req-server
263If set to "ignore", the framework will ignore any of the server input to
264.Xr krb5_rd_req 3 ,
265this is very useful when the GSS-API server input the
266wrong server name into the gss_accept_sec_context call.
267.It Li k5login_directory = Va directory
268Alternative location for user .k5login files. This option is provided
269for compatibility with MIT krb5 configuration files.
270.It Li k5login_authoritative = Va boolean
271If true then if a principal is not found in k5login files then
272.Xr krb5_userok 3
273will not fallback on principal to username mapping. This option is
274provided for compatibility with MIT krb5 configuration files.
275.It Li kuserok = Va rule ...
276Specifies
277.Xr krb5_userok 3
278behavior.  If multiple values are given, then
279.Xr krb5_userok 3
280will evaluate them in order until one succeeds or all fail.  Rules are
281implemented by plugins, with three built-in plugins
282described below. Default: USER-K5LOGIN SIMPLE DENY.
283.It Li kuserok = Va DENY
284If set and evaluated then
285.Xr krb5_userok 3
286will deny access to the given username no matter what the principal name
287might be.
288.It Li kuserok = Va SIMPLE
289If set and evaluated then
290.Xr krb5_userok 3
291will use principal to username mapping (see auth_to_local below).  If
292the principal maps to the requested username then access is allowed.
293.It Li kuserok = Va SYSTEM-K5LOGIN[:directory]
294If set and evaluated then
295.Xr krb5_userok 3
296will use k5login files named after the
297.Va luser
298argument to
299.Xr krb5_userok 3
300in the given directory or in
301.Pa /etc/k5login.d/ .
302K5login files are text files, with each line containing just a principal
303name; principals apearing in a user's k5login file are permitted access
304to the user's account. Note: this rule performs no ownership nor
305permissions checks on k5login files; proper ownership and
306permissions/ACLs are expected due to the k5login location being a
307system location.
308.It Li kuserok = Va USER-K5LOGIN
309If set and evaluated then
310.Xr krb5_userok 3
311will use
312.Pa ~luser/.k5login
313and
314.Pa ~luser/.k5login.d/* .
315User k5login files and directories must be owned by the user and must
316not have world nor group write permissions.
317.It Li aname2lname-text-db = Va filename
318The named file must be a sorted (in increasing order) text file where
319every line consists of an unparsed principal name optionally followed by
320whitespace and a username.  The aname2lname function will do a binary
321search on this file, if configured, looking for lines that match the
322given principal name, and if found the given username will be used, or,
323if the username is missing, an error will be returned.  If the file
324doesn't exist, or if no matching line is found then other plugins will
325be allowed to run.
326.It Li fcache_strict_checking
327strict checking in FILE credential caches that owner, no symlink and
328permissions is correct.
329.It Li name_canon_rules = Va rules
330One or more service principal name canonicalization rules.  Each rule
331consists of one or more tokens separated by colon (':').  Currently
332these rules are used only for hostname canonicalization (usually when
333getting a service ticket, from a ccache or a TGS, but also when
334acquiring GSS initiator credentials from a keytab).  These rules can be
335used to implement DNS resolver-like search lists without having to use
336DNS.
337.Pp
338NOTE: Name canonicalization rules are an experimental feature.
339.Pp
340The first token is a rule type, one of:
341.Va as-is,
342.Va qualify, or
343.Va nss.
344.Pp
345Any remaining tokens must be options tokens:
346.Va use_fast
347(use FAST to protect TGS exchanges; currently not supported),
348.Va use_dnssec
349(use DNSSEC to protect hostname lookups; currently not supported),
350.Va ccache_only
351,
352.Va use_referrals,
353.Va no_referrals,
354.Va lookup_realm,
355.Va mindots=N,
356.Va maxdots=N,
357.Va order=N,
358domain=
359.Va domain,
360realm=
361.Va realm,
362match_domain=
363.Va domain,
364and match_realm=
365.Va realm.
366.Pp
367When trying to obtain a service ticket for a host-based service
368principal name, name canonicalization rules are applied to that name in
369the order given, one by one, until one succeds (a service ticket is
370obtained), or all fail.  Similarly when acquiring GSS initiator
371credentials from a keytab, and when comparing a non-canonical GSS name
372to a canonical one.
373.Pp
374For each rule the system checks that the hostname has at least
375.Va mindots
376periods (if given) in it, at most
377.Va maxdots
378periods (if given), that the hostname ends in the given
379.Va match_domain
380(if given),
381and that the realm of the principal matches the
382.Va match_realm
383(if given).
384.Pp
385.Va As-is
386rules leave the hostname unmodified but may set a realm.
387.Va Qualify
388rules qualify the hostname with the given
389.Va domain
390and also may set the realm.
391The
392.Va nss
393rule uses the system resolver to lookup the host's canonical name and is
394usually not secure.  Note that using the
395.Va nss
396rule type implies having to have principal aliases in the HDB (though
397not necessarily in keytabs).
398.Pp
399The empty realm denotes "ask the client's realm's TGS".  The empty realm
400may be set as well as matched.
401.Pp
402The order in which rules are applied is as follows: first all the rules
403with explicit
404.Va order
405then all other rules in the order in which they appear.  If any two
406rules have the same explicit
407.Va order ,
408their order of appearance in krb5.conf breaks the tie.  Explicitly
409specifying order can be useful where tools read and write the
410configuration file without preserving parameter order.
411.Pp
412Malformed rules are ignored.
413.It Li allow_hierarchical_capaths = Va boolean
414When validating cross-realm transit paths, absent any explicit capath from the
415client realm to the server realm, allow a hierarchical transit path via the
416common ancestor domain of the two realms.
417Defaults to true.
418Note, absent an explicit setting, hierarchical capaths are always used by
419the KDC when generating a referral to a destination with which is no direct
420trust.
421.El
422.It Li [domain_realm]
423This is a list of mappings from DNS domain to Kerberos realm.
424Each binding in this section looks like:
425.Pp
426.Dl domain = realm
427.Pp
428The domain can be either a full name of a host or a trailing
429component, in the latter case the domain-string should start with a
430period.
431The trailing component only matches hosts that are in the same domain, ie
432.Dq .example.com
433matches
434.Dq foo.example.com ,
435but not
436.Dq foo.test.example.com .
437.Pp
438The realm may be the token `dns_locate', in which case the actual
439realm will be determined using DNS (independently of the setting
440of the `dns_lookup_realm' option).
441.It Li [realms]
442.Bl -tag -width "xxx" -offset indent
443.It Va REALM Li = {
444.Bl -tag -width "xxx" -offset indent
445.It Li kdc = Va [service/]host[:port]
446Specifies a list of kdcs for this realm.
447If the optional
448.Va port
449is absent, the
450default value for the
451.Dq kerberos/udp
452.Dq kerberos/tcp ,
453and
454.Dq http/tcp
455port (depending on service) will be used.
456The kdcs will be used in the order that they are specified.
457.Pp
458The optional
459.Va service
460specifies over what medium the kdc should be
461contacted.
462Possible services are
463.Dq udp ,
464.Dq tcp ,
465and
466.Dq http .
467Http can also be written as
468.Dq http:// .
469Default service is
470.Dq udp
471and
472.Dq tcp .
473.It Li admin_server = Va host[:port]
474Specifies the admin server for this realm, where all the modifications
475to the database are performed.
476.It Li kpasswd_server = Va host[:port]
477Points to the server where all the password changes are performed.
478If there is no such entry, the kpasswd port on the admin_server host
479will be tried.
480.It Li tgs_require_subkey
481a boolan variable that defaults to false.
482Old DCE secd (pre 1.1) might need this to be true.
483.It Li auth_to_local_names = {
484.Bl -tag -width "xxx" -offset indent
485.It Va principal_name = Va username
486The given
487.Va principal_name
488will be mapped to the given
489.Va username
490if the
491.Va REALM
492is a default realm.
493.El
494.It Li }
495.It Li auth_to_local = HEIMDAL_DEFAULT
496Use the Heimdal default principal to username mapping.
497Applies to principals from the
498.Va REALM
499if and only if
500.Va REALM
501is a default realm.
502.It Li auth_to_local = DEFAULT
503Use the MIT default principal to username mapping.
504Applies to principals from the
505.Va REALM
506if and only if
507.Va REALM
508is a default realm.
509.It Li auth_to_local = DB:/path/to/db.txt
510Use a binary search of the given DB.  The DB must be a flat-text
511file sortedf in the "C" locale, with each record being a line
512(separated by either LF or CRLF) consisting of a principal name
513followed by whitespace followed by a username.
514Applies to principals from the
515.Va REALM
516if and only if
517.Va REALM
518is a default realm.
519.It Li auth_to_local = DB:/path/to/db
520Use the given DB, if there's a plugin for it.
521Applies to principals from the
522.Va REALM
523if and only if
524.Va REALM
525is a default realm.
526.It Li auth_to_local = RULE:...
527Use the given rule, if there's a plugin for it.
528Applies to principals from the
529.Va REALM
530if and only if
531.Va REALM
532is a default realm.
533.It Li auth_to_local = NONE
534No additional principal to username mapping is done. Note that
535.Va auth_to_local_names
536and any preceding
537.Va auth_to_local
538rules have precedence.
539.El
540.It Li }
541.El
542.It Li [capaths]
543.Bl -tag -width "xxx" -offset indent
544.It Va client-realm Li = {
545.Bl -tag -width "xxx" -offset indent
546.It Va server-realm Li = Va hop-realm ...
547This serves two purposes. First the first listed
548.Va hop-realm
549tells a client which realm it should contact in order to ultimately
550obtain credentials for a service in the
551.Va server-realm .
552Secondly, it tells the KDC (and other servers) which realms are
553allowed in a multi-hop traversal from
554.Va client-realm
555to
556.Va server-realm .
557Except for the client case, the order of the realms are not important.
558.El
559.It Va }
560.El
561.It Li [logging]
562.Bl -tag -width "xxx" -offset indent
563.It Va entity Li = Va destination
564Specifies that
565.Va entity
566should use the specified
567.Li destination
568for logging.
569See the
570.Xr krb5_openlog 3
571manual page for a list of defined destinations.
572.El
573.It Li [kdc]
574.Bl -tag -width "xxx" -offset indent
575.It Li database Li = {
576.Bl -tag -width "xxx" -offset indent
577.It Li dbname Li = Va [DATBASETYPE:]DATABASENAME
578Use this database for this realm.  The
579.Va DATABASETYPE
580should be one of 'lmdb', 'db3', 'db1', 'db', 'sqlite', or 'ldap'.
581See the info documetation how to configure different database backends.
582.It Li realm Li = Va REALM
583Specifies the realm that will be stored in this database.
584It realm isn't set, it will used as the default database, there can
585only be one entry that doesn't have a
586.Li realm
587stanza.
588.It Li mkey_file Li = Pa FILENAME
589Use this keytab file for the master key of this database.
590If not specified
591.Va DATABASENAME Ns .mkey
592will be used.
593.It Li acl_file Li = PA FILENAME
594Use this file for the ACL list of this database.
595.It Li log_file Li = Pa FILENAME
596Use this file as the log of changes performed to the database.
597This file is used by
598.Nm ipropd-master
599for propagating changes to slaves.  It is also used by
600.Nm kadmind
601and
602.Nm kadmin
603(when used with the
604.Li -l
605option), and by all applications using
606.Nm libkadm5
607with the local backend, for two-phase commit functionality.  Slaves also
608use this.  Setting this to
609.Nm /dev/null
610disables two-phase commit and incremental propagation.  Use
611.Nm iprop-log
612to show the contents of this log file.
613.It Li log-max-size = Pa number
614When the log reaches this size (in bytes), the log will be truncated,
615saving some entries, and keeping the latest version number so as to not
616disrupt incremental propagation.  If set to a negative value then
617automatic log truncation will be disabled.  Defaults to 52428800 (50MB).
618.El
619.It Li }
620.It Li max-request = Va SIZE
621Maximum size of a kdc request.
622.It Li require-preauth = Va BOOL
623If set pre-authentication is required.
624.It Li ports = Va "list of ports"
625List of ports the kdc should listen to.
626.It Li addresses = Va "list of interfaces"
627List of addresses the kdc should bind to.
628.It Li enable-http = Va BOOL
629Should the kdc answer kdc-requests over http.
630.It Li tgt-use-strongest-session-key = Va BOOL
631If this is TRUE then the KDC will prefer the strongest key from the
632client's AS-REQ or TGS-REQ enctype list for the ticket session key that
633is supported by the KDC and the target principal when the target
634principal is a krbtgt principal.  Else it will prefer the first key from
635the client's AS-REQ enctype list that is also supported by the KDC and
636the target principal.  Defaults to FALSE.
637.It Li svc-use-strongest-session-key = Va BOOL
638Like tgt-use-strongest-session-key, but applies to the session key
639enctype of tickets for services other than krbtgt principals. Defaults
640to FALSE.
641.It Li preauth-use-strongest-session-key = Va BOOL
642If TRUE then select the strongest possible enctype from the client's
643AS-REQ for PA-ETYPE-INFO2 (i.e., for password-based pre-authentication).
644Else pick the first supported enctype from the client's AS-REQ.  Defaults
645to FALSE.
646.It Li use-strongest-server-key = Va BOOL
647If TRUE then the KDC picks, for the ticket encrypted part's key, the
648first supported enctype from the target service principal's hdb entry's
649current keyset. Else the KDC picks the first supported enctype from the
650target service principal's hdb entry's current keyset.  Defaults to TRUE.
651.It Li check-ticket-addresses = Va BOOL
652Verify the addresses in the tickets used in tgs requests.
653.\" XXX
654.It Li allow-null-ticket-addresses = Va BOOL
655Allow address-less tickets.
656.\" XXX
657.It Li allow-anonymous = Va BOOL
658If the kdc is allowed to hand out anonymous tickets.
659.It Li historical_anon_realm = Va boolean
660Enables pre-7.0 non-RFC-comformant KDC behavior.
661With this option set to
662.Li true
663the client realm in anonymous pkinit AS replies will be the requested realm,
664rather than the RFC-conformant
665.Li WELLKNOWN:ANONYMOUS
666realm.
667This can have a security impact on servers that expect to grant access to
668anonymous-but-authenticated to the KDC users of the realm in question:
669they would also grant access to unauthenticated anonymous users.
670As such, it is not recommend to set this option to
671.Li true.
672.It Li encode_as_rep_as_tgs_rep = Va BOOL
673Encode as-rep as tgs-rep to be compatible with mistakes older DCE secd did.
674.\" XXX
675.It Li kdc_warn_pwexpire = Va TIME
676The time before expiration that the user should be warned that her
677password is about to expire.
678.It Li logging = Va Logging
679What type of logging the kdc should use, see also [logging]/kdc.
680.It Li hdb-ldap-structural-object Va structural object
681If the LDAP backend is used for storing principals, this is the
682structural object that will be used when creating and when reading
683objects.
684The default value is account .
685.It Li hdb-ldap-create-base Va creation dn
686is the dn that will be appended to the principal when creating entries.
687Default value is the search dn.
688.It Li enable-digest = Va BOOL
689Should the kdc answer digest requests. The default is FALSE.
690.It Li digests_allowed = Va list of digests
691Specifies the digests the kdc will reply to. The default is
692.Li ntlm-v2 .
693.It Li kx509_ca = Va file
694Specifies the PEM credentials for the kx509 certification authority.
695.It Li require_initial_kca_tickets = Va boolean
696Specified whether to require that tickets for the
697.Li kca_service
698service principal be INITIAL.
699This may be set on a per-realm basis as well as globally.
700Defaults to true for the global setting.
701.It Li kx509_include_pkinit_san = Va boolean
702If true then the kx509 client principal's name and realm will be
703included in an
704.Li id-pkinit-san
705certificate extension.
706This can be set on a per-realm basis as well as globally.
707Defaults to true for the global setting.
708.It Li kx509_template = Va file
709Specifies the PEM file with a template for the certificates to be
710issued.
711The following variables can be interpolated in the subject name using
712${variable} syntax:
713.Bl -tag -width "xxx" -offset indent
714.It principal-name
715The full name of the kx509 client principal.
716.It principal-name-without-realm
717The full name of the kx509 client principal, excluding the realm name.
718.It principal-name-realm
719The name of the client principal's realm.
720.El
721.El
722The
723.Li kx509 ,
724.Li kx509_template ,
725.Li kx509_include_pkinit_san ,
726and
727.Li require_initial_kca_tickets
728parameters may be set on a per-realm basis as well.
729.It Li [kadmin]
730.Bl -tag -width "xxx" -offset indent
731.It Li password_lifetime = Va time
732If a principal already have its password set for expiration, this is
733the time it will be valid for after a change.
734.It Li default_keys = Va keytypes...
735For each entry in
736.Va default_keys
737try to parse it as a sequence of
738.Va etype:salttype:salt
739syntax of this if something like:
740.Pp
741[(des|des3|etype):](pw-salt|afs3-salt)[:string]
742.Pp
743If
744.Ar etype
745is omitted it means everything, and if string is omitted it means the
746default salt string (for that principal and encryption type).
747Additional special values of keytypes are:
748.Bl -tag -width "xxx" -offset indent
749.It Li v5
750The Kerberos 5 salt
751.Va pw-salt
752.El
753.It Li default_key_rules = Va {
754.Bl -tag -width "xxx" -offset indent
755.It Va globing-rule Li = Va keytypes...
756a globbing rule to matching a principal, and when true, use the
757keytypes as specified the same format as [kadmin]default_keys .
758.El
759.It Li }
760.It Li prune-key-history = Va BOOL
761When adding keys to the key history, drop keys that are too old to match
762unexpired tickets (based on the principal's maximum ticket lifetime).
763If the KDC keystore is later compromised traffic protected with the
764discarded older keys may remain protected.  This also keeps the HDB
765records for principals with key history from growing without bound.
766The default (backwards compatible) value is "false".
767.It Li use_v4_salt = Va BOOL
768When true, this is the same as
769.Pp
770.Va default_keys = Va des3:pw-salt Va v4
771.Pp
772and is only left for backwards compatibility.
773.It Li [password_quality]
774Check the Password quality assurance in the info documentation for
775more information.
776.Bl -tag -width "xxx" -offset indent
777.It Li check_library = Va library-name
778Library name that contains the password check_function
779.It Li check_function = Va function-name
780Function name for checking passwords in check_library
781.It Li policy_libraries = Va library1 ... libraryN
782List of libraries that can do password policy checks
783.It Li policies = Va policy1 ... policyN
784List of policy names to apply to the password. Builtin policies are
785among other minimum-length, character-class, external-check.
786.El
787.El
788.El
789.Sh ENVIRONMENT
790.Ev KRB5_CONFIG
791points to the configuration file to read.
792.Sh FILES
793.Bl -tag -width "/etc/krb5.conf"
794.It Pa /etc/krb5.conf
795configuration file for Kerberos 5.
796.El
797.Sh EXAMPLES
798.Bd -literal -offset indent
799[libdefaults]
800	default_realm = FOO.SE
801	name_canon_rules = as-is:realm=FOO.SE
802	name_canon_rules = qualify:domain=foo.se:realm=FOO.SE
803	name_canon_rules = qualify:domain=bar.se:realm=FOO.SE
804	name_canon_rules = nss
805[domain_realm]
806	.foo.se = FOO.SE
807	.bar.se = FOO.SE
808[realms]
809	FOO.SE = {
810		kdc = kerberos.foo.se
811		default_domain = foo.se
812	}
813[logging]
814	kdc = FILE:/var/heimdal/kdc.log
815	kdc = SYSLOG:INFO
816	default = SYSLOG:INFO:USER
817[kadmin]
818	default_key_rules = {
819		*/ppp@* = arcfour-hmac-md5:pw-salt
820	}
821.Ed
822.Sh DIAGNOSTICS
823Since
824.Nm
825is read and parsed by the krb5 library, there is not a lot of
826opportunities for programs to report parsing errors in any useful
827format.
828To help overcome this problem, there is a program
829.Nm verify_krb5_conf
830that reads
831.Nm
832and tries to emit useful diagnostics from parsing errors.
833Note that this program does not have any way of knowing what options
834are actually used and thus cannot warn about unknown or misspelled
835ones.
836.Sh SEE ALSO
837.Xr kinit 1 ,
838.Xr krb5_openlog 3 ,
839.Xr strftime 3 ,
840.Xr verify_krb5_conf 8
841